最常用、最推荐的是--cpus参数,按核数限制容器cpu使用量,支持小数并自动换算为--cpu-quota和--cpu-period;--cpu-quota需配合--cpu-period使用,适用于精细调优;docker-compose中需在deploy.resources.limits下以字符串形式配置cpus字段。

直接在 docker run 命令里加 --cpus 或 --cpu-quota + --cpu-period 就能限制容器 CPU 使用量,最常用、最推荐的是 --cpus。
--cpus:按核数限制(推荐)
指定容器最多能用多少个 CPU 核心(支持小数),Docker 会自动换算成 --cpu-quota 和 --cpu-period。适合大多数场景,直观易懂。
-
--cpus=1.5表示最多使用 1.5 个逻辑 CPU(比如双核机器上可占用 75% 的总 CPU 时间) -
--cpus=0.2表示最多用 20% 的单核能力(即 200ms/1s 周期) - 实际效果是软限制:当系统空闲时,容器可以跑满;资源紧张时,会被强制限频
--cpu-quota 和 --cpu-period:底层时间片控制
这两个参数配合使用,控制 CFS(Completely Fair Scheduler)调度器分配给容器的 CPU 时间片。一般不需要手动设,除非要精细调优或兼容旧版本 Docker。
-
--cpu-period=100000(默认值,单位微秒,即 100ms) -
--cpu-quota=50000表示每 100ms 最多运行 50ms → 相当于--cpus=0.5 - 注意:
--cpu-quota必须配合--cpu-period才生效;单独设 quota 无效
在 docker-compose.yml 中配置
如果是用 Compose 部署,把限制写在 deploy.resources.limits 下:
services:
app:
image: nginx
deploy:
resources:
limits:
cpus: '1.2'
memory: 512M
⚠️ 注意:cpus 字段必须是字符串(带引号),否则 YAML 解析可能出错;数值含义和 --cpus 完全一致。
验证是否生效
启动后可用以下命令确认限制已加载:
-
docker inspect | grep -i cpu→ 查看HostConfig.CpuCount或CpuQuota -
cat /sys/fs/cgroup/cpu/docker//cpu.max(cgroup v2)或cpu.cfs_quota_us(v1)→ 看实际配额值 - 进容器运行
stress-ng --cpu 4 --timeout 30s,再在宿主机用docker stats观察 CPU% 是否被压在设定范围内











