Docker资源限定
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker资源限定相关的知识,希望对你有一定的参考价值。
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资源限定的主要内容,如果未能解决你的问题,请参考以下文章