首页/云/Docker 容器速查/docker run --cpu-shares 相对权重
资源与安全50 条

docker run --cpu-shares 相对权重

设置 CPU 争抢时的相对份额(默认 1024):仅在 CPU 饱和时按比例分配,是软性优先级而不是上限。

Docker 容器速查云更新于 2026-10-13

--cpu-shares 是什么

--cpu-shares 设置容器争抢 CPU 时的相对份额,默认 1024。它是软性优先级:只有在 CPU 饱和时按比例分配,机器空闲时低权重容器照样能用满 CPU。需要硬性上限应该用 --cpus。

基本信息

语法--cpu-shares=<整数>,默认 1024
生效条件仅在 CPU 资源争抢时体现
性质相对权重,不是上限
硬上限对应--cpus 或 --cpu-quota
核对docker inspect 的 HostConfig.CpuShares

典型使用场景

  • 同一台机器上区分核心服务与批处理任务的优先级
  • 避免批量任务与在线服务争抢时把在线服务拖慢
  • 容量评估:设定权重后跑混合负载,观察实际分配比例
  • 多租户实验环境里按租户重要度分配算力
  • 临时给重要任务提高权重,快速完成而不动其他配置

权重设置与核对

权重设置与核对
docker run -d --cpu-shares=2048 --name important app/critical:1.4.2   # 高权重
docker run -d --cpu-shares=512 --name batch app/batch:1.4.2          # 低权重
docker inspect -f '{{.HostConfig.CpuShares}}' important              # 核对权重值
docker run -d --cpus=1.5 --name capped app/api:1.4.2                 # 需要上限时用这个

相关参数的区别

参数性质适用判断
--cpu-shares相对权重,默认 1024争抢时谁优先
--cpus绝对上限最多能用多少核
--cpu-quota上限的底层表达需要精确控制周期时
--cpuset-cpus绑定具体核心隔离性要求高的场景
机器空闲时低权重容器一样能用满 CPU,把权重误当上限会导致容量评估偏差,压测时要制造真实竞争。
与 --cpus 混用时两者共同生效:权重决定争抢比例,上限决定天花板,排障时两个参数都要核对。
权重是相对值,改一个容器的权重会同时改变其他容器的实际占比,不要只看某个数值就下结论。
多核机器上单线程应用的表现主要受单核能力限制,提高权重并不等于线性提速。
权重只影响 CPU 时间的分配比例,不改变内存与 IO 的优先级;多类资源同时争抢时要把几组限制一起看,单点调参通常解决不了瓶颈。
权重可以用 docker update 在运行中调整,适合临时救急;正式生效的配置仍要写回编排文件,否则容器重建后又会回到旧值。

易错点

  • 把权重误当上限:机器空闲时低权重容器照样能用满 CPU,容量评估会偏
  • 与 --cpus 混用时两个参数共同生效,只看一个会得出错误结论
  • 只调一个容器的权重会改变其他容器的实际占比,需要一起评估
  • 单线程应用在多核机器上提高权重换不来线性提速,优化方向要回到应用本身

数据来源与参考

  • Docker 官方 CLI 参考:docker run --cpu-shares(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌