Docker容器资源限制解决办法

原创 浪子丶刘少  2019-06-25 10:00  阅读 1,553 次 评论 1 条 百度未收录

一、内存限额

-m 或 --memory:设置内存的使用限额,例如 100M, 2G。

--memory-swap:设置 内存+swap 的使用限额。

例:
docker run -m 200M --memory-swap=300M centos
#其含义是允许该容器最多使用 200M 的内存和 100M 的 swap。
#默认情况下,上面两组参数为 -1,即对容器内存和 swap 的使用没有限制。

docker run -it -m 200M \
--memory-swap=300M progrium/stress \
--vm 1 --vm-bytes 280M
注:
--vm 1:启动 1 个内存工作线程
--vm-bytes 280M:每个线程分配 280M 内存。
在启动容器时只指定 -m 而不指定 --memory-swap,那么 --memory-swap 默认为 -m 的两倍

二、CPU限额

#默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制

#-c 或 --cpu-shares 设置容器使用 CPU 的权重。如果不指定,默认值为 1024。

#通过 cpu share 可以设置容器使用 CPU 的优先级。

例:在 host 中启动了两个容器
docker run --name "container_A" -c 1024 ubuntu
docker run --name "container_B" -c 512 ubuntu
#container_A 的 cpu share 1024,是 container_B 的两倍。
#当两个容器都需要 CPU 资源时,container_A 可以得到的 CPU 是 container_B 的两倍。
#按权重分配 CPU 只会发生在 CPU 资源紧张的情况下。
#如果 container_A 处于空闲状态,这时,为了充分利用 CPU 资源,container_B 也可以分配到全部可用的 CPU。
三、Block IO磁盘读写限额
注:目前 Block IO 限额只对 direct IO(不使用文件缓存)有效
block IO 权重
--blkio-weight
#修改容器 block IO 的优先级
#--cpu-shares 类似,设置的是相对权重值,默认为 500
例:
docker run -it --name container_A --blkio-weight 600 ubuntu   
docker run -it --name container_B --blkio-weight 300 ubuntu
限制 bps 和 iops
bps 是 byte per second,每秒读写的数据量。
iops 是 io per second,每秒 IO 的次数。

--device-read-bps,限制读某个设备的 bps。
--device-write-bps,限制写某个设备的 bps。
--device-read-iops,限制读某个设备的 iops。
--device-write-iops,限制写某个设备的 iops。

例:限制容器写 /dev/sda 的速率为 30 MB/s
docker run -it --device-write-bps /dev/sda:30MB centos
测试:
容器内运行:
time dd if=/dev/zero of=test.out bs=1M count=800 oflag=direct
#oflag=direct 指定用 direct IO 方式写文件,这样 --device-write-bps 才能生效

四、cgroup 实现资源限额

cgroup 全称 Control Group。Linux 操作系统通过 cgroup 可以设置进程使用 CPU、内存 和 IO 资源的限额。
在 /sys/fs/cgroup/ 目录中,Linux 会为每个容器创建一个 cgroup 目录,以容器长ID 命名
/sys/fs/cgroup/cpu/docker
CPU配置存放路径
/sys/fs/cgroup/memory/docker
内存配置存放路径
/sys/fs/cgroup/blkio/docker
Block IO 配置存放路径

本文地址:https://www.ezliushao.com/229.html
加入我们:请加入刘少技术博客交流群:扫描二维码刘少技术博客的QQ交流群 | 浪子丶刘少 QQ:1150110267(注:微信暂停添加好友)
版权声明:本文为原创文章,版权归 浪子丶刘少 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

  1. 武陵红苗
    武陵红苗 【新手】 @回复

    可以。