我是靠谱客的博主 故意西装,最近开发中收集的这篇文章主要介绍修改已经运行的Docker容器的资源限制欢迎来到小萨的小课堂为什么要限制容器对内存的使用?着手实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

修改已经运行的Docker容器的资源限制

  • 欢迎来到小萨的小课堂
  • 为什么要限制容器对内存的使用?
  • 着手实现
    • 指令
    • 内存限制相关的参数

欢迎来到小萨的小课堂

默认情况下容器使用的资源是不受限制的。也就是可以使用主机内核调度器所允许的最大资源。但是在容器的使用过程中,经常需要对容器可以使用的主机资源进行限制,本文介绍如何限制容器可以使用的主机内存。

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

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

着手实现

指令

docker container update <容器名/容器UUID> --cpu="2.0" --memory="5g" --memory-swap="-1"

内存限制相关的参数

选项描述
-m,–memory内存限制,格式是数字加单位,单位可以为 b,k,m,g。最小为 4M
–memory-swap内存+交换分区大小总限制。格式同上。必须必-m设置的大
–memory-reservation内存的软性限制。格式同上
–oom-kill-disable是否阻止 OOM killer 杀死容器,默认没设置
–oom-score-adj容器被 OOM killer 杀死的优先级,范围是[-1000, 1000],默认为 0
–memory-swappiness用于设置容器的虚拟内存控制行为。值为 0~100 之间的整数
–kernel-memory核心内存限制。格式同上,最小为 4M

最后

以上就是故意西装为你收集整理的修改已经运行的Docker容器的资源限制欢迎来到小萨的小课堂为什么要限制容器对内存的使用?着手实现的全部内容,希望文章能够帮你解决修改已经运行的Docker容器的资源限制欢迎来到小萨的小课堂为什么要限制容器对内存的使用?着手实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部