Docker容器内存限制通过--memory参数设置,单位支持b/k/m/g;建议配合--memory-swap禁用swap,可选--oom-score-adj和--memory-reservation优化OOM行为;docker-compose.yml中对应mem_limit、mem_reservation和mem_swap字段。

基础内存限制写法
启动容器时直接加 --memory 即可:
- --memory=2g:限制最大使用 2GB 物理内存
- --memory=1024m:等价于 1GB
- --memory=512000k:约 500MB(注意单位换算)
建议同时设置内存交换限制
默认 Docker 允许使用 swap(即内存 + swap 总和不超过 --memory),但生产环境通常禁用 swap 避免性能抖动。用 --memory-swap 控制:
- --memory=512m --memory-swap=512m:完全禁用 swap,容器最多用 512MB 物理内存
- --memory=512m --memory-swap=1g:允许最多 512MB swap(总上限 1GB)
- --memory-swap=-1:不限制 swap(默认行为)
配合 OOM 优先级与软限制(可选)
如果希望容器在内存紧张时被更早 kill,可调低 OOM score:
- --oom-score-adj=500:数值越高越容易被系统 OOM killer 干掉(范围 -1000~1000)
- --memory-reservation=256m:设置软限制,当宿主机内存紧张时,Docker 会尝试把容器内存压到该值以下(但不强制)
在 docker-compose.yml 中配置
YAML 文件中对应字段为 mem_limit 和 mem_reservation:
services:
app:
image: nginx
mem_limit: 512m
mem_reservation: 256m
mem_swap: 512m
注意:mem_swap 是 total swap 上限,不是额外 swap 量;若设为 512m 且 mem_limit 也是 512m,则等效禁用 swap。


















