docker 资源控制
为了合理的分配cpu,内存等资源,防止个别容器占用过多的资源,我们可以使用cgroup对单个容器进行可使用资源控制。
cat /sys/fs/cgroup/cpu/docker/容器id/cpu.cfs_quota_us #查看容器可用资源限制
#-1 代表资源不受控制。
#cpu周期:1s为一个周期定律,参数值一般为100000,加入要给此容器分配20%的cpu使用率,就设置参数值为20000,相当于每个周期分配给这个容器0.2秒
限定方式
1.创建容器时限定
docker run -it --name ph5 --cpu-quota 30000 centos /bin/bash
yum install -y bc
echo “scale=5000;4*a(1)” | bc -l -q #压测,计算圆周率
#查看cpu使用率
2.对已有容器限制
echo “20000” > 容器id/cpu.cfs_quota_us
3.设置容器权重
按比例分配,设置容器权重,此处权重时所有值相加,再看占用百分比
docker run -itd --name ph11 --cpu-shares 1024 centos /bin/bash
docker run -itd --name ph22 --cpu-shares 512 centos /bin/bash
docker exec -it ph11 /bin/bash #分别进入两个容器
yum install epel-release -y
yum install stress -y #stress模拟满载线程
strss -c 4 #cpu数量
docker stats #在宿主机上查看
4.限制容器使用的cpu
docker run -itd --name ph111 --cpuset-cpus 1,3 centos /bin/bash #指定使用2,4cpu
限定容器使用内存
docker run -itd --name ph111 -m 512m centos /bin/bash
限定容器使用IO
docker的IO限制就是对block的IO进行约束
控制数据量用的越多,其中I控制IO次数使用的越少
–device-read-bps:限制读某个设备bps(数据量)
docker run -itd --device-read-bps /dev/sda:30M centos /bin/bash
–device-write-bps:限制读某个设备bps(数据量)
docker run -itd --device-write-bps /dev/sda:30M centos /bin/bash
–device-read-iops:限制读某个设备iops(次数)
–device-write-iops:限制写入某个设备的iops(次数)
device-read-iops:限制读某个设备iops(次数)
–device-write-iops:限制写入某个设备的iops(次数)