生产环境容器必须设置内存硬限制(-m)防oom,建议设cpu硬限制(--cpus)防资源抢占;禁用swap(--memory-swap=内存值)更安全,避免掩盖内存压力。

直接在启动容器时加几个关键参数就能有效防止单个容器拖垮宿主机。内存限制必须设,CPU限制建议设,这是生产环境的底线配置。
内存限制:防止OOM杀进程
内存是不可压缩资源,超限会触发内核OOM Killer,直接杀容器(常见退出码137)。必须用 -m 或 --memory 设硬上限:
- 基础写法:docker run -m 512m nginx —— 最多用512MB物理内存
- 禁用swap更安全:加上 --memory-swap=512m,让总内存+swap不超过512MB,避免swap掩盖真实内存压力
- 软限制可选:--memory-reservation=384m 可作为缓冲,系统紧张时才强制收紧
CPU限制:避免持续占满核心
CPU是可压缩资源,不限制不会直接崩溃,但会导致其他服务响应卡顿。推荐用 --cpus 做硬限制:
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
- 按核数配比:docker run --cpus=1.2 nginx —— 最多用1.2个逻辑CPU核心(支持小数)
- 不推荐只用--cpu-shares:它只是竞争时的权重比例,空闲时容器仍可跑满全部CPU,起不到防护作用
- 绑定特定核心(进阶):--cpuset-cpus="0-2" 适合对缓存敏感或需要隔离的场景
组合使用与验证
一个典型生产配置示例:
docker run -d \ --name api-service \ -m 1g --memory-swap=1g \ --cpus=2 \ nginx
启动后立刻验证是否生效:
- 看实时用量:docker stats api-service(持续观察CPU%、MEM USAGE)
- 查原始配置:docker inspect api-service | grep -A 5 "HostConfig"










