Docker技术入门与实战(第3版)
上QQ阅读APP看书,第一时间看更新

4.2 停止容器

本节主要介绍Docker容器的pause/unpause、stop和prune子命令。

1.暂停容器

可以使用docker [container] pause CONTAINER [CONTAINER...]命令来暂停一个运行中的容器。

例如,启动一个容器,并将其暂停:

        $ docker run --name test --rm -it ubuntu bash
        $ docker pause test
        $ docker ps
        CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
        893c811cf845 ubuntu "bash" 2 seconds ago Up 12 seconds (Paused) test

处于paused状态的容器,可以使用docker [container] unpause CONTAINER [CONTAINER...]命令来恢复到运行状态。

2.终止容器

可以使用docker [container] stop来终止一个运行中的容器。该命令的格式为docker [container] stop [-t|--time[=10]] [CONTAINER...]。

该命令会首先向容器发送SIGTERM信号,等待一段超时时间后(默认为10秒),再发送SIGKILL信号来终止容器:

        $ docker stop ce5
        ce5

此时,执行docker container prune命令,会自动清除掉所有处于停止状态的容器。

此外,还可以通过docker [container] kill直接发送SIGKILL信号来强行终止容器。

当Docker容器中指定的应用终结时,容器也会自动终止。例如,对于上一章节中只启动了一个终端的容器,用户通过exit命令或Ctrl+d来退出终端时,所创建的容器立刻终止,处于stopped状态。

可以用docker ps -qa命令看到所有容器的ID。例如:

        $ docker ps -qa
        ce554267d7a4
        d58050081fe3
        e812617b41f6

处于终止状态的容器,可以通过docker [container] start命令来重新启动:

        $ docker start ce554267d7a4
        ce554267d7a4
        $ docker ps
        CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
        ce554267d7a4  ubuntu:latest  "/bin/sh  -c  'while  t  4  minutes  ago  Up  5  seconds
            determined_pike

docker [container] restart命令会将一个运行态的容器先终止,然后再重新启动:

        $ docker restart ce554267d7a4
        ce554267d7a4
        $ docker ps
        CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
        ce554267d7a4  ubuntu:latest  "/bin/sh  -c  'while  t     5  minutes  ago  Up  14  seconds
            determined_pike