1、容器
2、容器相关命令
2.1、运行容器(docker run)
通过 docker run [options] image 命令来运行一个容器。
options 参数说明:
- -i:以交互形式运行容器。通常与 -t 同时使用。
- -t:为容器重新分配一个伪输入终端。
- --name:为运行的容器指定名称。如果不指定名称,docker会为该容器随机指定一个名称。比如:docker run -it --name mytomcat
下面运行 centos 容器:
执行运行命令之后,可以看到 root 后面是容器的 id,此时说明 centos 容器已经启动成功,并且此时是进入了该容器的输入终端中。
2.1.1、启动容器(docker start)
我们可以先通过 docker ps -a 命令来查看所有正在运行和之前运行过的容器,然后通过 docker start 容器ID 的命令来启动已停止的容器。
使用示例:
2.1.2、重启容器(docker restart)
正在运行的容器或者已经停止的容器都可以通过 docker restart 容器ID 命令来重启容器。
使用示例:
2.1.3、以后台形式运行容器(docker run -d)
-d 参数意思是以后台模式启动容器。
通过该参数运行容器,你会发现容器会自动退出。因为 docker 容器运行必须要有一个前台进程,否则容器会自动退出,这个是 docker 的机制问题。
下面运行 centos 容器,运行过后通过 docker ps -a 命令可以发现已经自动退出了:
所以一般用 -d 参数时搭配 -it 参数一起使用,此时在运行容器时不会自动进入容器,但是容器也不会自动退出。
2.2、停止容器(exit、docker stop、docker kill)
如果我们进入了容器的终端,此时可以直接通过 exit 命令来退出并停止容器。exit 命令在退出容器的同时也关闭容器,进入docker容器后如果退出容器,容器就会变成 Exited 的状态。
或者直接通过 ctrl+P+Q 快捷键来控制容器不停止只退出。
通过 stop 和 kill 命令也能关闭容器:
docker stop 容器id #正常关闭容器 docker kill 容器id #暴力关闭容器
2.3、查看运行的容器列表(docker ps)
可以通过 docker ps 命令来查看所有运行的容器。
docker ps # 查看当前正在运行的容器 docker ps -a # 查看当前运行和所有运行过的容器
docker ps -l #查看上一个运行的容器
示例如下:
可以看到查询结果的列名中,CONTAINER ID 就是容器的 id,IMAGE 就是镜像名称,status 表示容器的状态(exited表示已经退出停止,up表示正在运行),NAMES 就是容器的名称。
2.4、重新进入容器(docker attach、docker exec)
在我们使用 -itd 命令来以后台模式运行容器,或者是在运行容器时使用 ctrl + P +Q 来退出容器但不停止容器时,此时我们可以通过 docker attach 或者是 docker exec 命令来重新进入容器。
docker attach 命令会直接进入该容器的终端中,并且如果从该命令进入,然后退出容器的话会导致容器停止。如下执行完 attach 命令后,可以看到终端名称发生了改变:
docker exec 命令可以在宿主机外直接对容器进行操作,当然也可以进入容器的终端。
如果从 exec 命令进入容器,然后退出容器的话,容器不会停止,所以一般推荐大家使用 docker exec 命令。
2.5、删除容器(docker rm)
docker rm 容器ID #删除已停止运行的容器。如果该容器正在运行,可能会提示报错 docker rm -f 容器ID #强制删除容器,可删除正在运行的容器。实际上就是先停止后删除
使用示例:
2.6、查看容器日志(docker logs)
通过 docker logs 容器ID 命令可查看容器日志。通过加参数 docker logs -t -f 容器ID 可保持一直输出容器最新日志在控制台。
2.7、查看容器内运行的进程(docker top 容器id)
通过 docker top 容器id 命令可查看该容器内运行的进程:
2.8、查看容器内部细节(docker inspect 容器id)
通过 docker inspect 容器id 命令可查看该容器内部细节,可以看到是一个 json 格式数据:
2.9、复制容器内文件到宿主机(docker cp )
可通过 cp 命令将容器内的文件复制到本宿主机上来,语法如下:
docker cp 容器ID:容器内的绝对路径 本宿主机路径
#示例:
docker cp f429600985ba:/usr/aa.log /root