Docker 资源限制

限定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
Docker 资源限制


分享到:


相關文章: