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 資源限制


分享到:


相關文章: