文章目录
- Docker资源控制
- 1.对CPU的控制
- 1)限制CPU使用速率
- 2)多任务按比例分享CPU
- 3)限制CPU的内核使用
- 2.对内存使用的限制
- 3. 对blkio的限制
Docker资源控制
1.对CPU的控制
1)限制CPU使用速率
在Docker中可以通过 --cpu-quota选项来限制CPU的使用率,CPU的百分比是以1000为单位的。
docker run --cpu-quota 20000 容器名 # CPU的使用率限定为20%在CentOS中还可以通过修改对应的Cgrep配置文件/sys/fs/cgroup/cpu/docker/容器编号/cpu.cfs_quota_us的值来实现,直接执行echo命令将设定值导入到此文件中就会立即生效。
[root@localhost ~]# echo 20000 > /sys/fs/cgroup/cpu/docker/ae4c24239956ee20786a966cd4db9a459a459e2c47faaf03977ab88d03b7a834/cpu.cfs_quota_us2)多任务按比例分享CPU
当有多个容器任务运行时,很难计算CPU的使用率。为了使容器合理使用CPU资源,可以通过–cpu-share选项设置CPU按比例共享CPU资源,这种方式还可以实现CPU使用率的动态调整。
比如:运行三个容器A、B、C,占用CPU资源的比例为1:1:2,可以这样执行:
docker run --cpu-share 1024 容器A
docker run --cpu-share 1024 容器B
docker run --cpu-share 2048 容器C3)限制CPU的内核使用
在Docker中可以使用–cpuset-cpus选项来使某些程序独享CPU内核,以便提高其处理速度。
如果服务器有16个内核,那么CPU的编号为015,使容器绑定15个内核使用,则:
docker run --cpuset-cpus 0,1,2,3,4 容器名建议:
尽量使用绑定内核的方式分配CPU资源给容器进程使用,然后再配合 --cpu-share选项动态调整CPU使用资源的比例。
2.对内存使用的限制
在Docker中可以通过docker run -m命令来限制容器内存使用量,相应的Cgroup配置文件为/sys/fs/cgroup/memory/memory.limit_in_bytes 。但是需要注意:一旦容器Cgroup使用的内存超过了限制的容量,Linux内核将会尝试收回这些内存,如果仍旧没法控制内存使用在限制范围之内,进程就会被杀死。
例如:限制容器的内存为512M
docker run -m 512m 容器名3. 对blkio的限制
如果是在一台服务器上进行容器的混合部署,那么会出现同时有几个程序写磁盘数据的情况,这时可以通过 --device-write-iops选项来限制写入的iops,相应的还有 --device-read-bps选项可以限制读取的iops。但是这种方法只能针对blkio限制的是设备(device),而不是分区。相应Cgroup写配置文件/sys/fs/cgroup/blkio/docker/容器ID/blkio.throttle.write_iops_device。
例如:限制容器的/dev/sda1 的写入iops为1MB
docker run --device-write-bps /dev/sda1:1mb 容器名
















