Linux.中国 - 开源社区

 找回密码
 骑士注册

QQ登录

微博登录


Docker 容器初体验

2014-12-24 14:30    评论: 3 收藏: 3 分享: 2    

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的基础。

本文摘自《第一本Docker书

1234
查看其它分页:

发表评论


最新评论

我也要发表评论

linux 2014-12-24 23:24
1
来自 - 广西来宾 的 Chrome/Windows 用户 发表于 2014-12-24 15:20 的评论:
虚拟机啊
不是传统的 VMWARE之类的 VM
回复
来自 - 广西来宾 的 Chrome/Windows 用户 2014-12-24 15:20
虚拟机啊
回复
翟启亮 2014-12-24 15:03  新浪微博网友评论
@我的印象笔记
回复
返回顶部

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”将网页分享至朋友圈。