Docker容器资源限制需正确选用参数:CPU用--cpus设硬上限、--cpu-shares设权重比例、--cpuset-cpus绑定核心;内存必须用-m设硬上限,配合--memory-swap禁用swap,可选--memory-reservation设软下限;Compose中limits为硬限,reservations为预留保障。

直接用 docker run 加上对应参数就能创建带资源限制的容器。关键不是“能不能”,而是选对参数、设对数值——多数问题出在配错类型或忽略软硬限制的区别。
CPU 限制:按需选一种方式,别混用
要简单控上限,用
--cpus
比如限制最多用 1.5 个逻辑核心:docker run -d --cpus 1.5 --name web nginx要多容器间按比例分 CPU(比如后台任务让着前端),用
--cpu-shares
默认是 1024,设成 2048 就比默认高一倍:docker run -d --cpu-shares 2048 --name api nginxdocker run -d --cpu-shares 1024 --name worker nginx要绑定物理核心(适合低延迟或 NUMA 场景),用
--cpuset-cpus
例如只允许跑在第 0 和第 2 号 CPU 上:docker run -d --cpuset-cpus "0,2" --name db postgres
内存限制:必须设硬上限,慎用 swap
最小必要配置:
-m(即--memory)设物理内存上限docker run -d -m 512m --name cache redis防止 swap 滥用:把
--memory-swap设成和-m相同值,等于禁用 swapdocker run -d -m 512m --memory-swap 512m --name app python:alpine如果想留点弹性空间(比如允许短时突发),可加
--memory-reservation作为软下限docker run -d -m 1g --memory-reservation 768m --name backend node:18
OpenClaw Docker Setup下载在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
组合使用示例(生产常用)
docker run -d \ --name production-app \ --cpus "2.0" \ -m 2g \ --memory-swap 2g \ --pids-limit 200 \ --blkio-weight 300 \ nginx:alpine
这表示:最多用 2 核 CPU、2GB 物理内存(不许用 swap)、最多 200 个进程、IO 权重调低防磁盘争抢。
Docker Compose 中写法更清晰
services:
app:
image: nginx
deploy:
resources:
limits:
cpus: '2.0'
memory: 2G
reservations:
cpus: '1.0'
memory: 1Glimits 是硬上限,reservations 是调度时预留的最小保障——Kubernetes 风格,适合集群环境。
不复杂但容易忽略。

















