docker 常用命令总结

1.获取镜像(ubuntu镜像名称)

docker pull ubuntu

2.查看启动的容器ID(加-a查看所有容器)

docker ps

#查看所有(包括未启动容器)

docker ps -a

3.进入容器

docker exec -it xxxxx(容器ID) /bin/bash

4.启动容器

docker run -itd --name my-ubuntu ubuntu /bin/bash

启动已停止容器:

docker start xxxx(容器ID ,用docker ps -a 查看)

参数说明

--name 自定义容器名称

-d: 后台运行

-i: 交互式操作。

-t: 终端。

ubuntu: ubuntu 镜像。

/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

-p 端口映射,比如 -p 5001:5000 代表本地5001端口对应容器里面5000端口映射,用docker port xxx(容器ID)可以快速查看已映射的端口,也可直接本地外部IP,比如-p 127.0.0.1:5001:5000(这样可以通过127.0.0.1::5001访问容器映射的5000端口)


5.退出容器用exit

6.停止容器

docker stop xxxx(容器ID)

7.重启容器

docker restart xxxx(容器ID)

8.导出容器

#导出容器 1e560fca3906 快照到本地文件 ubuntu.tar。

docker export 1e560fca3906(容器ID)> ubuntu.tar

9.导入容器快照

#以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:

 cat docker/ubuntu.tar | docker import - test/ubuntu:v1

也可通过URL或者某个目录导入

 docker import http://example.com/exampleimage.tgz example/imagerepo

10.删除容器

docker rm  -f xxxx(容器ID)

11.查看日志

docker logs -f xxxx(容器ID)

=====================================================

镜像


①列出本地主机上的镜像

 docker images

②查找镜像(imagename代表要搜索的镜像名称,如httpd)

docker search imagename

③删除镜像

docker rmi xxxx(镜像名称)

④更新镜像(基于某容器)

docker commit -m="镜像说明" -a="作者" xxxx(容器ID) brisklan/ubuntu:v1

参数说明:


-m: 提交的描述信息

-a: 指定镜像作者

xxxx:容器 ID

brisklan/ubuntu:v1: 指定要创建的目标镜像名


⑤构建镜像(用docker build 从零创建新镜像)

01.创建Dockerfile文件

内容如下:

FROM    mysql
MAINTAINER     Brisklan "wei@alipay168.cn"

RUN    apt-get update


EXPOSE  22
EXPOSE  80/tcp
EXPOSE 3306
CMD     /bin/bash

说明:

FROM xxx :基于哪个镜像

LABEL: 指定作者信息,也可用MAINTAINER

MAINTAINER :指定镜像作者信息,即镜像的Author属性。LABEL是一个更灵活的版本,可以替代MAINTAINER,LABEL可以设置任何需要设置的元数据,并且可以轻松查看,例如docker inspect。可以使用LABEL设置MAINTAINER。

RUN :指令告诉docker 在镜像内执行命令,安装了什么。。

EXPOSE:指定容器在运行时监听指定的网络端口,可以多个

CMD:指定容器启动时要执行的命令,上面这样在运行镜像时可以忽略最后的/bin/bash指令直接进入bash指令,(docker run -it xxx),如果run时传入则使用传入的指令,多条CMD指令只有最后一条生效。


02.用docker build构建镜像

docker build -t brisklan/mysql:1.0  .

参数:

-t :指定创建的目标镜像名称

. :Dockerfile文件所在目录,可以指定Dockerfile的绝对路径


03.设置镜像标签

docker tag xxxxx(镜像ID) brisklan/mysql:ok

========================================

docker网络

1.查看所有docker网络

docker network ls

2.创建一个新网络

 docker network create -d bridge new-net

参数说明:

-d:参数指定 Docker 网络类型,有 bridge、overlay。

其中 overlay 网络类型用于 Swarm mode,你可以忽略它。

==========================================

Docker 容器互联

先看一个官方提示:

image.png

大概意思:当容器连接到同一个网络时他们可以互联,否则不行。


1.运行一个容器连接到指定的网络(new-net)

 docker run -itd --name test1 --network new-net ubuntu /bin/bash

2.运行另一个容器连接到指定的网络(new-net)

docker run -itd --name test2 --network new-net ubuntu /bin/bash

==========================================


评论/留言