Docker资源控制
1.CPU
[root@localhost ~]# cd /sys/fs/cgroup/cpu
[root@localhost cpu]# ls
cgroup.clone_children cpuacct.stat cpu.cfs_quota_us cpu.stat system.slice
cgroup.event_control cpuacct.usage cpu.rt_period_us docker tasks
cgroup.procs cpuacct.usage_percpu cpu.rt_runtime_us notify_on_release user.slice
cgroup.sane_behavior cpu.cfs_period_us cpu.shares release_agent
[root@localhost cpu]# cd docker
[root@localhost docker]# ls
86f87f283a502170b056684d86eadd98b946edffce06e2bba193d4f19d2cb294 cpu.cfs_quota_us
cgroup.clone_children cpu.rt_period_us
cgroup.event_control cpu.rt_runtime_us
cgroup.procs cpu.shares
cpuacct.stat cpu.stat
cpuacct.usage notify_on_release
cpuacct.usage_percpu tasks
cpu.cfs_period_us
[root@localhost docker]# docker run -itd --name test2 --net mynetwork --ip=172.18.0.10 centos:7 /bin/bash
285e24863db37565c619d42d98a1681ba4235df1f399489f20861998d5905a58
[root@localhost docker]# ls
285e24863db37565c619d42d98a1681ba4235df1f399489f20861998d5905a58 cpu.cfs_period_us
86f87f283a502170b056684d86eadd98b946edffce06e2bba193d4f19d2cb294 cpu.cfs_quota_us
cgroup.clone_children cpu.rt_period_us
cgroup.event_control cpu.rt_runtime_us
cgroup.procs cpu.shares
cpuacct.stat cpu.stat
cpuacct.usage notify_on_release
cpuacct.usage_percpu tasks
[root@localhost docker]# cd 86f87f283a502170b056684d86eadd98b946edffce06e2bba193d4f19d2cb294/
[root@localhost 86f87f283a502170b056684d86eadd98b946edffce06e2bba193d4f19d2cb294]# ls
cgroup.clone_children cpuacct.stat cpu.cfs_period_us cpu.rt_runtime_us notify_on_release
cgroup.event_control cpuacct.usage cpu.cfs_quota_us cpu.shares tasks
cgroup.procs cpuacct.usage_percpu cpu.rt_period_us cpu.stat
[root@localhost 86f87f283a502170b056684d86eadd98b946edffce06e2bba193d4f19d2cb294]# cat cpu.cfs_quota_us
-1
#-1的意思是你的主机有几个CPU就占用几个CPU
docker run -itd --name test1 --cpu-quota 20000 centos:7 /bin/bash
#或者
echo 20000 > /sys/fs/cgroup/cpu/docker/(docker的运行id)/cpu.cfs_quota
yum -y install bc
echo "scale=5000;4*a(1)" | bc -l -q
docker run -itd --name c1 --cpu-shares 512 centos:7
docker run -itd --name c2 --cpu-shares 1024 centos:7
#创建两个容器为c1和c2,若是只有这两个容器,设置容器的权重,使得c1和c2的CPU资源占比33.3%和66.7%
yum -y install epel-release
yum -y install stress
stress -c 4 #产生四个CPU线程
#在每个容器里面执行
docker stats
#验证结果
docker run -itd --name test2 --cpuset-cpus 1,3 centos:7 /bin/bash
#限制容器使用指定的CPU,验证方法是:top按1检查
2.内存
docker run -itd --name test3 -m 512m centos:7
stress -m 1204m --vm 2
docker stats
#验证
3.IO资源
docker run -d --device-read-bps /dev/sda:30M centos:7
#--device-read-bps:限制读某个设备bps(数据量)
docker run -d --device-write-bps /dev/sda:30M centos:7
#--device-write-bps:限制写入某个设备的bps(数据量)
#--device-read-iops:限制读某个设备的iops(次数)
#--device-write-iops:限制写入某个设备的iops(次数)