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...