- 论坛徽章:
- 6
|
11 停止守护式容器
要停止守护式容器,只需要执行docker stop命令,如代码清单3-25所示。
代码清单3-25 停止正在运行的Docker容器
$ sudo docker stop daemon_dave
当然,也可以用容器ID来指代容器名称,如代码清单3-26所示。
代码清单3-26 通过容器ID停止正在运行的容器
$ sudo docker stop c2c4e57c12c4
{注意}
docker stop命令会向Docker容器进程发送SIGTERM信号。如果你想快速停止某个容器,也可以使用docker kill命令来向容器进程发送SIGKILL信号。
要想查看已经停止的容器的状态,则可以使用docker ps命令。还有一个很实用的命令docker ps -n x,该命令会显示最后x个容器,不论这些容器正在运行还是已经停止。
12 自动重启容器
如果由于某种错误而导致容器停止运行,我们还可以通过--restart标志,让Docker自动重新启动该容器。--restart标志会检查容器的退出代码,并据此来决定是否要重启容器。默认的行为是Docker不会重启容器。
代码清单3-27是一个在docker run命令中使用—restart标志的例子。
代码清单3-27 自动重启容器
$ sudo docker run --restart=always --name daemon_dave -d ubuntu /
bin/sh -c "while true; do echo hello world; sleep 1; done"
在本例中,--restart标志被设置为always。无论容器的退出代码是什么,Docker都会自动重启该容器。除了always,我们还可以将这个标志设为on-failure,这样,只有当容器的退出代码为非0值的时候,才会自动重启。另外,on-failure``还接受``一个可选的重启次数参数,如代码清单3-28所示。
代码清单3-28 为on-failure指定count参数
--restart=on-failure:5
这样,当容器退出代码为非0时,Docker会尝试自动重启该容器,最多重启5次。
{注意}
--restart标志是Docker1.2.0引入的选项。
13 深入容器
除了通过docker ps命令获取容器的信息,我们还可以使用docker inspect``来获得更多的容器信息,如代码清单3-29所示。
代码清单3-29 查看容器
$ sudo docker inspect daemon_dave
[{
"ID": "c2c4e57c12c4c142271c031333823af95d64b20b5d607970c334784430bcbd0f",
"Created": "2014-05-10T11:49:01.902029966Z",
"Path": "/bin/sh",
"Args": [
"-c",
"while true; do echo hello world; sleep 1; done"
],
"Config": {
"Hostname": "c2c4e57c12c4",
. . .
docker inspect命令会对容器进行详细的检查,然后返回其配置信息,包括名称、命令、网络配置以及很多有用的数据。
我们也可以用-f或者--format标志来选定查看结果,如代码清单3-30所示。
代码清单3-30 有选择地获取容器信息
$ sudo docker inspect --format='{{ .State.Running }}' daemon_dave
false
上面这条命令会返回容器的运行状态,示例中该状态为false。我们还能获取其他有用的信息,如容器IP地址,如代码清单3-31所示。
代码清单3-31 查看容器的IP地址
$ sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' daemon_dave
172.17.0.2
{提示}
--format或者-f标志远非表面看上去那么简单。该标志实际上支持完整的Go语言模板。用它进行查询时,可以充分利用Go语言模板的优势。
我们也可以同时指定多个容器,并显示每个容器的输出结果,如代码清单3-32所示。
代码清单3-32 查看多个容器
$ sudo docker inspect --format '{{.Name}} {{.State.Running}}' daemon_dave bob_the_container
/daemon_dave false
/bob_the_container false
我们可以为该参数指定要查询和返回的查看散列(inspect hash)中的任意部分。
{注意}
除了查看容器,你还可以通过浏览/var/lib/docker目录来深入了解Docker的工作原理。该目录存放着Docker镜像、容器以及容器的配置。所有的容器都保存在/var/lib/docker/containers目录下。
14 删除容器
如果容器已经不再使用,可以使用docker rm命令来删除它们,如代码清单3-33所示。
代码清单3-33 删除容器
$ sudo docker rm 80430f8d0921
80430f8d0921
{注意}
需要注意的是,运行中的Docker容器是无法删除的!你必须先通过docker stop或docker kill命令停止容器,才能将其删除。
目前,还没有办法一次删除所有容器,不过可以通过代码清单3-34所示的小技巧来删除全部容器。
代码清单3-34 删除所有容器
docker rm `docker ps -a -q`
上面的docker ps命令会列出现有的全部容器,-a标志代表列出所有(all)容器,而-q标志则表示只需要返回容器的ID而不会返回容器的其他信息。这样我们就得到了容器ID的列表,并传给了docker rm命令,从而达到删除所有容器的目的。
小结
在本章中我们介绍了Docker容器的基本工作原理。这里学到的内容也是本书剩余章节中学习如何使用Docker的基础。 |
|