1. 程式人生 > >Docker資源限定

Docker資源限定

如果 小數 空間 大小 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資源限定