docker-compose 限制容器内存占用 (V3)

deploy.resources.limits.memory

version: '3.8'  # 建议使用 3.7+ 版本
services:
  your-app:
    image: your-image:latest
    deploy:
      resources:
        limits:
          memory: 512M        # 硬限制:最大可用内存(必填)
          cpus: '0.5'         # 配套 CPU 限制(建议同时设置)
        reservations:
          memory: 256M        # 软限制:资源充足时可分配的最小内存(可选,建议)
    # 其他配置(ports, volumes 等)

关键注意事项

  1. v3 版本单机生效:直接用 deploy 字段;若需兼容 Swarm 模式,保持该配置不变。
  2. 单位规范:支持 b/k/m/g(字节 / 千字节 / 兆字节 / 吉字节),例如 1G2048M
  3. 软限制搭配reservations.memory 建议设为硬限制的 50%-80%,资源紧张时优先保障,避免容器被过早回收。
  4. 验证配置
    • 启动容器:docker-compose up -d
    • 检查限制:docker statsdocker inspect 容器ID | grep Memory
  5. 常见坑
    • 给数值加引号(如 memory: "512M")会导致解析失败;
    • 遗漏 deploy 字段或版本错误会导致限制不生效。
Categories: docker与kubernetes