docker資源限制

2022-08-26 01:15:08 字數 2453 閱讀 4521

docker run -m 200m --memory-swap=300m progrium/stress

--vm 1 --vm-bytes 290m --vm 1:啟動乙個記憶體工作執行緒

--vm-bytes 280m:每個執行緒分配280記憶體

因為280m在可分配的範圍(300m)內,所以可以正常工作

一直迴圈分配,釋放280m記憶體

docker run -it -m 200m --memory-swap=300m progrium/stress --vm 1 --vm-bytes 310m

一旦分配的記憶體超過限額,stress執行緒報錯,容器退出

注:如果在容器啟動時只指定 -m 而不指定–memory-swap

那麼預設是-m的二倍,容器最多使用200m物理記憶體和200m swap

預設模式下,所有容器是平等使用cpu資源並且沒有限制

可以使用-c或- -cpu-shares設定容器使用cpu的權重,預設為1024

通過-c設定的權重並不是cpu資源的絕對數量,而是乙個相對的權重值。某個容器最終能分配到的cpu資源取決於它的cpu share所佔容器cpu share總和的比例

docker run --name "con_a" -it -c 1024 progrium/stress --cpu 1

docker run --name "con_b" -it -c 512 progrium/stress --cpu 1

con_a的cpu share是1024,con_b的cpu share是512,當都需要cpu資源時,con_a就是con_b的兩倍

-c, --cpu-shares int 權重的設定

--cpus decimal 設定cpu的數量

--cpuset-cpus string 允許執行的cpu

--cpuset-mems string 允許執行的mems

block io指的是磁碟的讀寫,docker可通過設定權重,限制bps和iops的方式控制容器讀寫磁碟的頻寬,目前只對 direct io(不使用檔案快取)有效

block io權重

預設情況下,所有容器可以平等讀寫磁碟,可以通過設定 - -blkio-weight引數來改變容器block io的優先順序,預設是500

docker run -it --name con_a --blkio-weight 600 centos7

docker run -it --name con_b --blkio-weight 300 centos7

con_a讀寫磁碟的頻寬是con_b的兩倍

限制bps和iops bps是byte per second,每秒讀寫的資料量

iops是io per second,每秒io的次數

限制容器寫/dev/sda的速率為30mb/s

docker run -it --device-write-bps /dev/sda:30mb centos7:latest /bin/bash

cgroup

cgroup全稱control group,可以設定程序使用cpu,記憶體和io資源的限額

啟動乙個容器

docker run --name "con_a" -it -c 1024 progrium/stress --cpu 1

在/sys/fs/cgroup/cpu/docker/目錄裡,linux會為每個容器建立乙個cgroup目錄,以容器長id命名

目錄中包含所有cpu相關的cgroup配置,檔案cpu.shares儲存的就是 - -cpu-shares的配置

/sys/fs/cgroup/memory/docker/儲存的是記憶體的配置

/sys/fs/cgroup/blkio/docker/儲存的是block io的配置

mount namespace

mount namespace讓容器看上去擁有整個檔案系統

容器有自己的/目錄,可以執行mount,umount命令,不會影響到host

uts namespace

uts namespace讓容器擁有自己的hostname,可以通過-h或- - hostname設定

ipc namespace

ipc namespace讓容器擁有自己的共享記憶體和訊號量來實現程序間通訊,不會與host或其他的容器混在一起

pid namespace

pid namespace讓容器擁有自己獨立的pid

network namespace

network namespace讓容器擁有自己獨立的網絡卡,ip,路由等

user namespace

user namespace讓容器能夠管理自己的使用者,host不能看到容器中建立的使用者

Docker資源限制

1.linux cgroups 的全稱是 linux control group,是限制乙個程序組能夠使用的資源上限,包括 cpu 記憶體 磁碟 網路頻寬等。2.對程序進行優先順序設定 審計,以及將程序掛起和恢復等操作。3.linux cgroups 給使用者暴露出來的操作介面是檔案系統,它以檔案和...

Docker資源限制

m or memory 限制記憶體大小 例 memory 4m memory swap 限制交換分割槽,必須先設定記憶體大小,可設定的值 正數,0,1 正數 swap為swap memory 0 swap為物理機mem 2 1 不限制 注意 在容器內free看到的swap不具有展現出空間指示的意義 ...

docker資源限制

安裝docker後,可以在 sys fs cgroup docker 目錄下看到對docker組應用的各種限制項,包括全域性限制和位於子目錄中對於某個容器的單獨限制。使用者可以通過修改這些檔案值來控制組,從而限制docker應用資源。同時,也可以在建立或啟動容器時為每個容器指定資源的限制 c,cpu...