docker资源限制
- 创业
- 2025-07-21 19:07:23

默认情况下,容器没有资源使用限制,可以使用主机内核调度程序允许的尽可能多的资源 Docker提供了控制容器使用资源的方法,可以限制容器使用多少内存或CPU等 docker info命令可以查看内核中的某项特性警告(在输出结尾处)
修改内核参数 /etc/default/grub vim /etc/default/grub
OOM(Out of Memory Exception)若没有足够的内存来执行其他重要的系统任务,将会抛出OOM,随后系统会开始杀死进程以释放内存,凡是运行在宿主机的进程都有可能被kill 产生OOM异常时,Dockerd尝试通过调整Docker守护程序的OOM优先级来减轻这些风险,但是容器的OOM优先级并未调整,这使得容器被杀死可能性更大 不推荐通过守护程序或容器上手动设置--oom-score-adj为极端负数,或通过在容器上设置--oom-kill-disable来绕过这些安全措施
OOM优先级机制linux会为每个进程算一个分数,最终将分数最高的kill /proc/PID/oom_score_adj 范围为-1000到1000,值越高容易被宿主机kill掉,如果将该值设置为-1000,则进程永远不会被kill /proc/PID/oom_adj 范围为-17到+15,取值越高越容易被干掉,如果是-17,则表示不能被kill /proc/PID/oom_score 这个值是系统综合进程的内存消耗量、CPU时间和oom_adj计算出的进程得分,消耗内存越多得分越高,容易被宿主机kernel强制杀死
stress-ng压力测试工具stress-ng是一个压力测试工具,可以通过软件仓库进行安装,也提供了docker版本的容器
stress-ng安装软件包安装
Centos:yum -y install stress-ng Ubuntu:apt -y install stress-ng容器方式安装
docker pull lorel/docker-stress-ng stress-ng 使用 docker run -it --rm lorel/docker-stress-ng 格式:stress-ng [OPTION [ARG]] 容器内存限制Docker可以强制执行硬件内存限制,即只允许容器使用给定的内存大小 Docker也可以执行非硬性内存限制,即容器可以使用尽可能多的内存
内存相关选项 b k m g 表示字节,千字节,兆字节或千兆字节 -m , --memory= 容器可以使用的最大物理内存量,硬限制,此选项最小允许值为 4m --memory-swap 允许此容器交换到磁盘的内存量 , 必须先用 -m 对内存限制才可以使用 , 详 细说明如下 -- memory -swappiness 设置容器使用交换分区的倾向性,值越高表示越倾向于使用 swap 分 区,范围为 0-100 , 0 为能不用就不用, 100 为能用就用, N 表示内存使 用率达到 N% 时,就会使用 swap 空间 -- memory -reservation 允许指定小于 --memory 的软限制 ,当 Docker 检测到主机上的争用或 内存不足时会激活该限制,如果使 -- memory-reservation ,则必须将 其设置为低于 --memory 才能使其优先生效。 因为它是软限制,所以 不能保证容器不超过限制 -- kernel - memory 容器可以使用的最大内核内存量,最小为 4m ,由于内核内存与用户空 间内存隔离,因此无法与用户空间内存直接交换,因此内核内存不足的 容器可能会阻塞宿主机资源,这会对主机和其他容器或者其他服务进程 产生影响,因此不建议设置内核内存大小 -- oom - kill - disable 默认情况下,如果发生内存不足( OOM )错误,则内核将终止容器中 的进程。要更改此行为,请使用该 -- oom - kill - disable 选项。建议仅在 设置了该 - m/ -- memory 选项的容器上禁用 OOM 。如果 - m 未设置该标 志,则主机可能会用完内存,内核可能需要终止主机系统的进程以释放 内存docker资源限制由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“docker资源限制”
下一篇
node实现简单的数据爬虫