5、重启容器
就是重新启动一个容器。
命令:docker restart 容器ID或者容器名
示例
先查看当前宿主机的容器状态。
然后重启第一个容器,ID为14b077f2496b,名称为mycentos。
这里我们一定要注意看STATUS
状态为Up 2 hours
我们重启该容器,并查看他的启动时间,
我们可以看到重启之后,mycentos容器的启动时间变为了4秒,说明该容器进行了重启。
6、停止容器
停止正在运行的容器。(正常关闭容器)
命令:docker stop 容器ID或者容器名
演示:
先查看当前宿主机的容器状态。
执行命令关闭第三个容器,如下图:
7、强制停止容器
停止正在运行的容器。(暴力关闭容器)
命令:docker kill 容器ID或者容器名
演示:
先查看当前宿主机的容器状态。
执行命令,强制关闭第二个容器,如下图:
8、删除已停止的容器
命令:docker rm 容器ID
(1)删除一个已停止的容器
先查看当前宿主机的容器状态。
删除第一个正在运行的容器,如下:
[root@192 ~]# docker rm 14b077f2496b
Error response from daemon: You cannot remove a running container 14b077f2496b3c11d041a8bb138f60b32538ddedebe88245dc805a25669d0d83. Stop the container before attempting removal or force remove
守护进程daemon会提示我们,您不能删除正在运行的容器,请先停止容器。
如果需要删除正在运行的容器,加-f
参数,进行强制删除。
那我们接下来删除第二个容器,如下:
可以看到,第二个容器已经删除,现在宿主机上只有3个容器了。
(2)一次性删除多个已停止的容器
命令:docker rm 容器1ID 容器2ID 容器3ID ...
示例:
删除第二第三个容器,如下:
[root@192 ~]# docker rm 136475a80d92 5b6c5748a7b9
136475a80d92
5b6c5748a7b9
[root@192 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
14b077f2496b 300e315adb2f "/bin/bash" 3 hours ago Up 19 minutes mycentos
我们可以看到,此时宿主机上只有一个容器了。
(3)删除所有本机已停止的容器
-
方式一:
命令:
docker rm -f $(docker ps -aq)
说明:
docker rm -f
删除所有docker ps -aq
命令显示容器ID对应的容器。 -
方式二:
docker ps -aq| xargs docker rm
说明:
docker ps -aq
命令执行的结果,通过管道符,传递给后边的xargs。xargs是给命令传递参数的一个过滤器,以将管道或标准输入的数据转换成参数。
9、后台启动容器
后台启动容器也叫启动守护式容器。
命令:docker run -d 镜像ID或镜像名
查看本地镜像
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 3 months ago 209MB
以后台模式启动centos容器
# 使用镜像`centos:latest`以后台模式启动一个容器
[root@192 ~]# docker run -d centos
57fbb28467164eedf38f118530807840cdaab8497c43d6741a93c36f7ea408a3
执行命令后,返回了创建容器的ID,说明该容器一定启动了。
我们通过docker ps
命令查看启动的容器
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
发现此时宿主机中并没有正在运行的容器。
通过docker ps -a
命令查看本地容器
可以发现57fbb2846716容器确实被创建过了。
重点:
这里就有问题了,使用后台模式启动容器,然后使用docker ps -a
命令查看到centos容器已经停止了。
很重要的说明的一点:Docker容器后台模式运行,但是容器中要必须有一个前台进程运行。
Docker容器的运行,如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的,这个是Docker的机制问题。
说明:
比如,Docker中的容器,我们还以centos容器为例进行说明。
在Docker中centos容器使用后台进程模式运行,而centos容器中并没有配置项目或者其他应用,也就是没有对外提供的服务,就导致Docker发现该容器前台没有运行的应用,这样的容器启动后Docker会立即杀掉,因为Docker觉得他没事可做了。
所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行,就是这种容器加上-it
参数运行。
如下:
(这种模式也是有使用场景的,我们先知道Docker的这种机制就好。)