限定CPU、内存、IO资源
这是因为防止某个容器占用太多资源而影响其他容器的性能
1. 内存限制
容器可使用的内存分为物理内存和swap。
-m / --memory 设置内存
--memory-swap 设置内存加swap一起使用限制
设置内存200M,swap内存100M
docker run -m 200M --memory-swap=300M ubuntu
对容器进行压力测试
--vm 1 启动1个内存工作线程
--vm-bytes 280M 每个线程分配280M
docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-bytes 280M
如果只使用-m / --memory,那么会默认分配和内存等量的swap
2. CPU限制
默认情况下,容器可以使用宿主机的CPU资源,我们可以使用命令设置CPU的使用限制
-c / --cpu-shares
这里的设置限制不是限制的具体数量而只是一个相对的权重
docker run --name container_1 -it -c 1024 progrium/stress --cpu 1
docker run --name container_2 -it -c 512 progrium/stress --cpu 1
通过可以看到container_1使用cpu是container_2的两倍
3. IO带宽限制
限定IO磁盘读写,可以确保磁盘读写能够得到限制不会因为一个容器非正常读写导致其他容器无法进行读写操作
--blkio-weight 也是一个相对的权重
bps (byte per second)是每秒读写数据量
iops(io per second)每秒 IO 的次数
--device-read-bps 限制读某个设备的bps
--device-write-bps 限制写某个设备的bps
--device-read-iops 限制读某个设备的iops
--device-write-iops 限制写某个设备的iops
docker run -it --device-write-bps /dev/sda:30M ubuntu
docker run -it ubuntu
time dd if=/dev/zero of=test.out bs=1M count=800 oflag=direct