You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在docker-compose中配置swap内存,配置时'memory-swap'报错如何解决?

错误原因
  • memory-swap 不是deploy.resources.reservations下的合法配置字段,该参数属于资源上限配置,只能放在limits段下
  • deploy段的所有资源配置默认是Docker Swarm集群模式专属,如果你使用docker-compose up做单机部署,该段配置不会被识别,直接配置会触发报错
解决方案

场景1:单机docker-compose部署(用docker-compose up启动)

直接把内存、swap限制放在服务的根配置层级,不要嵌套在deploy段内,修改后的配置参考:

version: "3.3"             
services:
  app-cnn:
    build: ./app
    image: "app-cnn"
    restart: always
    container_name: app-cnn
    ports:
      - "5000:5000"
    # 资源限制直接写在服务根层级
    mem_limit: 3G
    memswap_limit: 6G

这里的memswap_limit是总可用内存(物理内存+swap),配置6G就代表容器最多可以用3G物理内存+3G swap,符合你的需求。

场景2:Swarm集群部署(用docker stack deploy启动)

把memory-swap从reservations移动到limits段下即可,修改后的配置参考:

version: "3.3"             
services:
  app-cnn:
    build: ./app
    image: "app-cnn"
    restart: always
    container_name: app-cnn
    ports:
      - "5000:5000"
    deploy:
      replicas: 1
      resources:
        limits:
          memory: 3G
          memory-swap: 6G
注意事项

如果配置后swap还是不生效,可执行docker info | grep Swap检查,如果输出WARNING: No swap limit support,说明系统没开启Docker的swap限制支持,需要修改/etc/default/grub文件,在GRUB_CMDLINE_LINUX参数后添加cgroup_enable=memory swapaccount=1,之后执行update-grub重启系统即可生效。

内容的提问来源于stack exchange,提问作者arush1836

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:24:03