停止容器 ,主要使用命令 pause/unpause 、stop 和 prune 子命令
一、暂停容器
语法:docker [container] pause CONTAINER [ CONTAINER.... ]
作用:暂停一个或多个运行中的容器
实例,启动一个容器,并查看运行状态
[root@iZ2zea4u8pasyhtllbo54oZ ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9068267d0668 mysql "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-stu
实例,暂停容器
# docker pause mysql-stu
实例,查看容器状态STATUS 为paused,就表示容器为暂停状态
[root@iZ2zea4u8pasyhtllbo54oZ ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9068267d0668 mysql "docker-entrypoint.s…" About an hour ago Up About an hour (Paused) 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-stu
二、恢复暂停中的容器
处于paused 状态的容器,可以使用 docker [container] unpause CONTAINER [ CONTAINER...] 命令恢复容器状态
语法: docker [container] unpause CONTAINER [CONTAINER...]
实例,恢复暂停中的容器
#docker container unpause mysql-stu
三、终止容器
语法:docker [ container ] stop [ -t |--time [ =10 ] ] [ CONTAINER... ]
作用:终止一个运行中的容器
该命令会首先向容器发送SIGTERM信号,等待一段超时时间后(默认为10秒),再发送SIGKILL信号来终止容器
# docker stop mysql-stu
此时,执行docker container prune命令,会自动清除掉所有处于停止状态的容器
此外,还可以通过docker [container] kill直接发送SIGKILL信号来强行终止容器
当Docker容器中指定的应用终结时,容器也会自动终止
例如,只启动了一个终端的容器,用户通过exit命令或Ctrl+d来退出终端时,所创建的容器立刻终止,处于stopped状态
可以用docker ps -qa命令看到所有容器的ID
# docker ps -qa 9068267d0668
处于终止状态的容器,可以通过docker [container] start命令来重新启动
语法:docker container start 容器id或容器名
实例:启动已经停止的mysql-stu容器
# docker container satrt mysql-stu
docker [container] restart 命令会将一个运行态的容器先终止,然后再重新启动
# docker container restart mysql-stu
如果在重启容器时,报以下错误,则需要重新启动容器后再重启容器
# docker start mysql-stu
Error response from daemon: driver failed programming external connectivity on endpoint mysql-stu (39543bb3a61dc1fe02c06f284628e337874435198ab8a26281d7c5f1f6436eee): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destination 172.18.0.2:3306 ! -i docker0: iptables: No chain/target/match by that name. (exit status 1)) Error: failed to start containers: mysql-stu
# systemctl restart docker 重启docker # docker start mysql-stu 重启容器