Docker資源限定
阿新 • • 發佈:2018-11-12
如果 小數 空間 大小 app 核心 不用 als pin
Memory
--OOME
一旦發生OOME,任何進程都有可能被殺死,包括docker daemon
為此docker特地調整了docker daemon的OOM優先級,以免它被內核"正法"
但容器的優先級並未被調整!
限制容器可以使用的內存資源:
默認是沒有限制!
-m/--memory --限制容器可用的內存空間
..............................................
--memory-swap k|b|m|g
限制交換分區使用大小,要先設置-m選項
用法規則:
-m的值為正數M時,--memory-swap 也是正數S時
容器可用總空間大小為S,其中ram為M,swap為(S-M)
若S=M則無可用swap資源
都設置有值時--memory-swap的值要大於-m
當-m等於正數M時--memory-swap為0時,相當於未設置swap
當-m等於正數時--memory-swap為unset 若主機啟用了swap
則容器的可用swap為2*M
unset=未設置
當-m為正數M時,--memory-swap 為-1 若主機啟用了swap
則容器可使用最大至主機上所有swap空間資源
註意:
在容器內使用free命令可以看到的swap空間並不具有其
所展現出的空間指標意義!
................................................
--memory-swappiness
[0--100]
0=能不用就不用交換分區
值越高就表示啟用的優先級越高
--memory-reservation --設置預留內存空間
--kernel-memory --
--oom-kill-disable
true/false
設置如果不想因為分配內存空間用盡而使得容器被殺死
就設置這一項的值為true
.....................................................
CPU設置:
容器可以使用宿主機上所有cpu資源!
CFS---算法
cpu數量小於進程數
--cpu-shares [1024]
cpu資源共享 ---設置一個比例,容器都需要時,按比例分配
如果一個需要其它不需要,就可以都分配給需要的那個容器
--cpus=<value> --限制一個容器最多能使用幾核cpu
支持使用小數如0.5
--cpu-period=<value>
--cpu-quota=<value>
--cpuset-cpus --限制使用cpu範圍
定義一個容器只能運行在那個cpu核心上工作!
cpu核心數從0開始
--cpuset-cpus 0-2
stress --鏡像
https://hub.docker.com
--fork [n] --啟動幾個進程
--vm [n] --啟動多少個進程對內存做壓測
--cpu [n] --使用幾個cpu
--io [n] --對io進行分配
--vm-bytes [n] --指定每個進程用多少內存
具體鏡像應用:
docker run -it --name b1 --rm -m 256m 1ae56ccafe55 stress --vm 2
docker top [容器名稱] --查看容器占用資源!
docker stats --顯示容器資源占用!
對cpu做壓測:
docker run -it --name b1 --rm -cpus 2 1ae56ccafe55 stress --cpu 4
定義使用的核心數為2
也就是說做壓測無論啟用多少個進程最多只能占用百分之二百資源
不做限制會直接使用所有cpu資源!
當我啟用兩個容器並對比例做出要求時:
docker run -it --name b1 --rm --cpu-shares 1024 1ae56ccafe55 stress --cpu 4
docker run -it --name b1 --rm --cpu-shares 512 1ae56ccafe55 stress --cpu 4
會按照比例分配cpu資源!
..........................................................
要想容器不會因占用資源過高而被kill:
方法1:
--oom-kill-disable=true --直接禁用
方法2:
--oom-score-adj [-1000-1000] 把值調整的越小越不容易被kill
Docker資源限定