# 容器可运用的内存包括两部分:物理内存和 swap。 Docker 经过下面两组参数来操控容器内存的运用量。
# -m 或 –memory:设置内存的运用限额,例如 100M, 2G。
# –memory-swap:设置 内存+swap 的运用限额。
# 当咱们执行如下指令:
docker run -m 200M –memory-swap=300M ubuntu
# 其含义是答应该容器最多运用 200M 的内存和 100M 的 swap。默认情况下,上面两组参数为 -1,即对容器内存和 swap 的运用没有约束。
# 下面咱们运用 progrium/stress 镜像来为容器分配内存。该镜像可用于对容器执行压力测验。执行如下指令:
docker run -it -m 200M –memory-swap=300M progrium/stress –vm 1 –vm-bytes 280M
# –vm 1:发动 1 个内存作业线程。
# –vm-bytes 280M:每个线程分配 280M 内存。
# 由于 280M 在可分配的规模(300M)内,所以作业线程能够正常作业,如果让作业线程分配的内存超越 300M,分配的内存超越限额,stress 线程报错,容器退出。
# 如果在发动容器时只指定 -m 而不指定 –memory-swap,那么 –memory-swap 默以为 -m 的两倍,比方:
docker run -it -m 200M ubuntu
# 容器最多运用 200M 物理内存和 200M swap。
# ———–
用户内存约束
选项 描绘
-m,–memory 内存约束,格局是数字加单位,单位可以为 b,k,m,g。最小为 4M
–memory-swap 内存+交流分区大小总约束。格局同上。有必要必-m设置的大
–memory-reservation 内存的软性约束。格局同上
–oom-kill-disable 是否阻挠 OOM killer 杀死容器,默认没设置
–oom-score-adj 容器被 OOM killer 杀死的优先级,规模是[-1000, 1000],默以为 0
–memory-swappiness 用于设置容器的虚拟内存操控行为。值为 0~100 之间的整数
–kernel-memory 核心内存约束。格局同上,最小为 4M
CPU 约束相关参数
docker run指令和 CPU 约束相关的所有选项如下:
选项 描绘
–cpuset-cpus=”” 答应运用的 CPU 集,值可以为 0-3,0,1
-c,–cpu-shares=0 CPU 同享权值(相对权重)
cpu-period=0 约束 CPU CFS 的周期,规模从 100ms~1s,即[1000, 1000000]
–cpu-quota=0 约束 CPU CFS 配额,有必要不小于1ms,即 >= 1000
–cpuset-mems=”” 答应在上执行的内存节点(MEMs),只对 NUMA 体系有效
# ———————-
# docker-compose:
mem_limit: 700m #最大内存运用不超越700m