Docker资源配额

Docker资源配额和数据持久化

Docker可以对容器使用的资源(CPU、内存、IO)进行配额控制,Docker对于所有资源的分配都是通过cgroup来进行的资源配额。
cgroup是Control Groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程所使用的物理资源(cpu、内存、IO)的一种技术,被LXC、docker等很多项目用于实现进程对应资源的控制。

指定容器在哪几个core上运行

指定容器在cpu0,1上运行

docker run -itd --name docker10 --cpuset-cpus 0,1 --cpu-shares 512 centos /bin/bash

给容器实例分配512权重的cpu使用份额

docker run --help | grep cpu-shares
# 查看配置份额的帮助命令
cpu 配额参数:-c,--cpu-shares int

CPU shares (relative weight)在创建容器时指定容器所使用的CPU份额值。cpu-shares的值不能保证可以获得1个vcpu或者多少Ghz的cpu资源,仅仅只是一个弹性的加权值。默认每个docker容器的cpu份额值都是1024.在同一个cpu核心上,同时运行多个容器时,容器的cpu加权的效果才能体现出来。
例如:两个容器A、B的cpu份额分别为1000和500,结果会怎么样?
情况1:A和B正常运行,占用同一个CPU,在cpu进行时间片分配的时候,容器A比容器B多一倍的机会获得CPU的时间片。
情况2:分配的结果取决当时其他容器的运行状态。比如容器A的进程一直是空闲的,那么容器B是可以获取比容器A更多的CPU时间片的;比如主机上只运行了一个容器,即使它的cpu份额只有50,它也可以独占整个主机的cpu资源。

cgroups只在多个容器同时争抢同一个cpu资源是,cpu配额才会生效。因此,无法单纯根据某个容器的cpu份额来确定有多少cpu资源分配给它,资源分配结果取决于同时运行的其他容器的cpu分配和容器中进程运行情况。

给容器实例分配512权重的cpu使用份额

docker run -it --cpu-shares 512 centos /bin/bash
cat /sys/fs/cgroup/cpu/cpu.shares

容器资源内存配额

允许容器使用的内存上限为128M:

docker run -it -m 128m centos
cat /sys/fs/cgroup/memory/memory.limit_in_bytes

容器资源IO配额

可以有效的防止某个docker容器吃光你的磁盘I/O资源
限制容器实例对磁盘的最该写入速度为1MB/s

mkdir -p /var/www/html/
docker run -it -v /var/www/html/:/var/www/html --device /dev/sda:/dev/sda --device-write-bps /dev/sda:1mb centos /bin/bash
time dd if=/dev/sda of=/var/www/html/test.out bs=1M count=50 oflag=direct,nonblock
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河越柯衍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值