限定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
閱讀更多 崔格拉斯 的文章