Linux.中国 - 开源社区

 找回密码
 骑士注册

QQ登录

微博登录


容器:向死而生的一生

2016-7-20 20:54    评论: 6 收藏: 2    

不能承受的容器之轻The unbearable lightness of being a container

就像 Linux 一样,可以用 kill 命令停止一个不正常或空闲的容器,并且无需注销或重启底层的服务器。Kill 命令会向容器中的主进程发送一个 SIGKILL 的 Linux 信号,同样 stop 命令会发送 SIGSTOP 的Linux 信号。这些在 Brian DeHamer 的文章中有详细的描述,本文将重点分析上图中其它的命令和事件:pause,OOM 和 destroy。 

暂停Making a pause

为什么要 pause 一个容器?好吧,你可能需要暂停一个拖慢进度的容器,或者想对这个容器做一下备份。 

有人预测 docker pause 未来可以用在容器的热迁移上。理论上,容器的热迁移是没有意义的,因为它们是无状态的,一次性的,还可以随时重启,但是…… 

避免“拥堵”Defending yourself from being choked

默认情况下,所有的容器都是平等的:它们享有同样的 CPU 周期和 IO,还能自由地使用内存。但某些情况下,我们需要用一些限制参数打破这种平等的待遇。比如,为了防止某些容器一直占用内存,造成 OOM(Out Of Memory)事件,“堵塞”服务器。但是,需要先去设置内存的限制。

首先我们来模拟下 OOM 的情景,来看下如果设置了内存限制,Docker Engine 是如何发挥作用的:


这个例子基于《Docker in Practice》一书中 301 的一个实例,在第一种情况下,被杀死的是进程(非主进程),而第二种情况下才是容器,为什么? 

健康检查Health checks that could save your container

要注意 Linux 内核在异常情况(比如资源不足)下只会 kill 一个进程,可能这样做已经太迟了。为什么不在应用出现问题前,提前检查呢?

在 Docker 1.12 中,不但可以在运行时进行限制,还能在启动容器时添加用户自定义的健康检查探针。比如,我们可以周期性地验证一个 web 服务是否在正常工作,而不仅仅是避免紊乱情况或内存溢出。

可以将健康检查作为 docker run 的选项,或写在 Dockerfile 中,docker ps 命令除了容器的常规状态,也会显示其“健康状况”。如下所示,第一次 docker ps 执行时,监控探针还是 starting 的状态,当第一个探针通过后变成 healthy 的状态。接下来我们用 docker inspect 查看容器的健康状况。我们通过删除一个配置文件制造不健康的假象,在一系列的探针失败后,最终容器被加上了 unhealthy 的标志。 

在当前的 Docker Engine 版本(1.12r3)中,容器不会在 unhealthy 的状态下重启,所以要检测容器的状态,手动地重启容器。

查看其它分页:

发表评论


最新评论

我也要发表评论

来自陕西西安的 Chrome 51.0|GNU/Linux 用户 2016-7-21 17:58
1
来自陕西西安的 Chrome 51.0|GNU/Linux 用户 发表于 2016-7-21 12:26 的评论:
整体下载该文章咋搞哦。谢谢
2
来自浙江杭州的 Chrome 52.0|Windows 10 用户 发表于 2016-7-21 15:10 的评论:
图片右下角有个打印,可以打开看完整页面
3
linux [Chrome 52.0|Mac 10.11] 发表于 2016-7-21 15:27 的评论:
对,打印模式可以整页打开。之所以分页,是文章不但长,而且其中大量图片,还有一个2M 的 GIF,所以才分页的。
学了一招,谢谢
回复
linux [Chrome 52.0|Mac 10.11] 2016-7-21 15:27
1
来自陕西西安的 Chrome 51.0|GNU/Linux 用户 发表于 2016-7-21 12:26 的评论:
整体下载该文章咋搞哦。谢谢
2
来自浙江杭州的 Chrome 52.0|Windows 10 用户 发表于 2016-7-21 15:10 的评论:
图片右下角有个打印,可以打开看完整页面
对,打印模式可以整页打开。之所以分页,是文章不但长,而且其中大量图片,还有一个2M 的 GIF,所以才分页的。
9 回复
来自浙江杭州的 Chrome 52.0|Windows 10 用户 2016-7-21 15:10
1
来自陕西西安的 Chrome 51.0|GNU/Linux 用户 发表于 2016-7-21 12:26 的评论:
整体下载该文章咋搞哦。谢谢
图片右下角有个打印,可以打开看完整页面
回复
来自陕西西安的 Chrome 51.0|GNU/Linux 用户 2016-7-21 12:26
整体下载该文章咋搞哦。谢谢
回复
linux [Chrome 52.0|Mac 10.11] 2016-7-21 08:45
1
______Mr_Chen [Safari 9.1|Mac 10.11] 发表于 2016-7-21 00:25 的评论:
events ,不是 event
谢谢!
回复
______Mr_Chen [Safari 9.1|Mac 10.11] 2016-7-21 00:25
events ,不是 event
回复

热点评论

linux [Chrome 52.0|Mac 10.11] 2016-7-21 15:27
对,打印模式可以整页打开。之所以分页,是文章不但长,而且其中大量图片,还有一个2M 的 GIF,所以才分页的。
9
返回顶部

分享到微信朋友圈

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