linux docker 分配资源,Docker 容器资源限制

Docker 容器资源限制

默认情况下,一个容器并没有资源限制,并且该容器可以使用内核调度的所有资源。Docke提供了在启动容器时设置一些参数来控制该容器使用的内存、cpu和IO。

OOME:在linux中,如果Linux内核发现宿主机没有足够的内存来调用执行系统的某些重要功能的时候,此时就会调用OOME(Out Of Memory Exception)来杀死某些进程,以此来释放内存。

一旦发生OOME,任何进程都有可能被杀死,包括docker daemon,因此Docker调整了Docker daemon的OOM优先级,防止其被杀死,但是容器的OOM并没有调整,此时如何内存不够用时,内核就会根据自己的调度算法,给所有的进程进行一个评分,然后杀死分数最高的进程来释放内存。

限制容器使用的内存资源

-m or --memory=n : 限制一个容器可以使用的最大内存,单位(b,k,m,g)

--memory-swap * : 限制一个容器可以使用的交换分区的大小,前提是必须先设置-m才能生效。

--memory-swappiness:设置容器的swap控制行为。值为0-100

--memory-reservation:设置内存的软限制

--kernel-memory:设置核心内存的最大值

--oom-kill-disable:是否阻止OOM 杀死容器,默认为否。

--memory-swap的总结:

--memory-swap --memory

功能描述

正数S 正数M 容器可以使用的总空间为S,ram为M,swap为(S-M),如果S=M,则没有swap资源

0 正数M 相当于没有设置swap

unset 正数M 如果Docker host启动了swap,则容器可用的 swap为2M

-1 正数M 如果Docker host启用了swap,则容器可以使用最大swap为Docker host上的所有swap空间的资源。在容器中,free所展现出来的swap分区是无效的*

cpu">cpu

默认情况,每个容器都可以使用系统的所有cpu资源。但是我们可以通过使用CFS调度器来分配容器使用的cpu资源。

CFS调度器配置

--cpus=:指定容器可以使用的cpu的核心数量

--cpu-period=: 指定cpu CFS的调度周期,默认是100ms

--cpu-quota=: 限制cpu CFS的配额。

--cpuset-cpus: 限制使用的cpu的集合,如有四个cpu,0-3则代表全部可以使用;1,3表示可以使用第二个和第四个。

--cpu-shares: 按比例切分cpu资源(cpu共享的权重)

使用docker提供的压测工具:docker pull lorel/docker-stress-ng

使用方法:

Example: stress-ng --cpu 8 --io 4 --vm 2 --vm-bytes 128M --fork 4 --timeout 10s

这里使用--cpu-shares按照比例来切分cpu资源,3个容器使用的cpu占比为512、1024、2048,比例为1:2:4

docker run --name stress -it --rm --cpu-shares 512 lorel/docker-stress-ng stree-ng --cpu 4

docker run --name stress1 -it --rm --cpu-shares 1024 lorel/docker-stress-ng stree-ng --cpu 4

docker run --name stress2 -it --rm --cpu-shares 2048 lorel/docker-stress-ng stree-ng --cpu 4

# docker stats

可以看到各个容器之间的cpu占比大概为1:2:4。

总结

以上是编程之家为你收集整理的Docker 容器资源限制全部内容,希望文章能够帮你解决Docker 容器资源限制所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值