一、概述
- Cgroup是Control group的缩写,是linux内核提供的一种限制所使用物理资源的机制
- 在Docker中,主要是利用linux内核提供的Cgroup机制来管理CPU、内存和blkio
二、对CPU的控制
2.1、限制CPU使用速率
- 在docker中可以通过–cpu-quota选项来限制CPU的使用率,cpu周期 1s 为100000,例如:
docker run --cpu-quota 20000 容器名 ###CPU限制使用率为20%
- 在Centos中还可以通过修改对应的Cgroup配置文件/sys/fs/cgroup/cpu/docker/容器编号/cpu.cfs_quota_us的值来实现
[root@localhost /]# echo 30000 > /sys/fs/cgroup/cpu/docker/ID号/cpu.cfs_quota_us
2.2、按比例分配CPU
- 多个容器运行时,很难计算CPU的使用率。为了能让容器合理使用cpu,可以通过–cpu-share选项设置CPU按比例共享cpu资源。
例如:
运行三个容器A、B、C,占用cpu资源比例为1:1:2,可以如下设置
[root@localhost /]# docker run --cpu-share 1024 容器B
[root@localhost /]# docker run --cpu-share 2048 容器C
2.3、限制cpu内核使用
- 在centos7中,按top再按1可以看见当前使用的cpu情况
- 使用cpuset-cpus选项可以指定容器只能运行在那个cpu核心上,
例如:
指定容器使用0和1编号cpu
[root@localhost /]# docker run -itd --name 容器名--cpuset-cpus 0,1 centos:7 /bin/bash
三、对内存的控制
- 在Docker中可以通过docker run -m 命令来限制容器内存使用量
- 相应的Cgroup配置文件为 /sys/fs/cgroup/memory/memory.limit_in_bytes;
例如:
docker run -itd --name test3 -m 512m centos:7
docker run -itd --name c5 -m 1024m centos:7
验证:
docker stats #另一个终端窗口查看所有容器的状态值
四、对blkio的控制
4.1、限制数据量
--device-read-bps:限制读某个设备的bps(数据量)
格式:docker run -itd --name 名字 --device-read-bps 设备名:读取额度 centos:7
例: docker run -d --name test4 --device-read-bps /dev/sda:30M centos:7
--device-write-bps:限制写入某个设备的bps(数据量)
格式:docker run -itd --name 名字 --device-read-bps 设备名:写入额度 centos:7
例: docker run -d --device-write-bps /dev/sda:30M centos:7
4.2、限制次数
--device-read-iops:限制读某个设备的iops(次数)
--device-write-iops:限制写入某个设备的iops(次数)