Docker怎么限制容器可用的内存-创新互联

小编给大家分享一下Docker怎么限制容器可用的内存,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

成都创新互联公司服务项目包括井冈山网站建设、井冈山网站制作、井冈山网页制作以及井冈山网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,井冈山网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到井冈山省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

为什么要限制容器对内存的使用?

限制容器不能过多的使用主机的内存是非常重要的。对于 linux 主机来说,一旦内核检测到没有足够的内存可以分配,就会扔出 oome(out of memmory exception),并开始杀死一些进程用于释放内存空间。糟糕的是任何进程都可能成为内核猎杀的对象,包括 docker daemon 和其它一些重要的程序。更危险的是如果某个支持系统运行的重要进程被干掉了,整个系统也就宕掉了!这里我们考虑一个比较常见的场景,大量的容器把主机的内存消耗殆尽,oome 被触发后系统内核立即开始杀进程释放内存。如果内核杀死的第一个进程就是 docker daemon 会怎么样?结果是所有的容器都不工作了,这是不能接受的!

针对这个问题,docker 尝试通过调整 docker daemon 的 oom 优先级来进行缓解。内核在选择要杀死的进程时会对所有的进程打分,直接杀死得分高的进程,接着是下一个。当 docker daemon 的 oom 优先级被降低后(注意容器进程的 oom 优先级并没有被调整),docker daemon 进程的得分不仅会低于容器进程的得分,还会低于其它一些进程的得分。这样 docker daemon 进程就安全多了。

我们可以通过下面的脚本直观的看一下当前系统中所有进程的得分情况:

?

1
新闻标题:Docker怎么限制容器可用的内存-创新互联
网站链接:http://hbruida.cn/article/ceeicp.html