SKYNE
V2EX  ›  程序员

求助! docker-compose 限制 CPU 不生效

By SKYNE at 2023 年 3 月 22 日 · 3115 次点击

1.环境

  • CentOS 7.X
  • Docker 20.10.12
  • Docker-compose v2.6.0

2.现象

  • 通过 docker run --cpus 参数可以限制 CPU ,docker inpsect 可以看到 NanoCpus 生效了
  • 但通过 docker-compose 创建的容器,docker inpsect 可以看到 NanoCpus 未变化
  • build 了一个运行 stress 的镜像,通过 docker stats 看到,docker-compose 启动的 CPU 未限制
  • 通过运行官方的示例仍然是未生效,但 memory 和 cpuset 却可以生效。。。

3.参考文档

version: "3.9"
services:
  redis:
    image: redis:alpine
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 50M
        reservations:
          cpus: '0.25'
          memory: 20M
第 1 条附言  ·  2023 年 3 月 22 日
自己在更新 docker-compose 至最新的 v2.17.0 版本后,运行官方示例,竟然可以了。。。\狗头
11 条回复  •  2023-03-22 17:24:39 +08:00
privil
   1
privil  
   2023 年 3 月 22 日
docker-compose 这玩意怎么说呢,维护得比较差,很多参数可能坑比较大。
modrich
   2
modrich  
   2023 年 3 月 22 日
2.启动 container 时加入--compatibility 参数
docker-compose --compatibility up -d

详见 https://www.jianshu.com/p/ba5518476057
ryan4290
   3
ryan4290  
   2023 年 3 月 22 日
是不是为了 Oracle 的实例 “保活” ? hh
jenlors
   4
jenlors  
   2023 年 3 月 22 日
docker-compose 需要在 swarm 模式下才能限制 CPU 内存这些东西,单机模式是不支持的
SKYNE
   5
SKYNE  
OP
   2023 年 3 月 22 日
@modrich 这个参数应该处于 v3 早期,兼容 v2 ,现在自己测下来,并不需要这个参数了

@jenlors 可能 docker-compose 使用的人少吧,非 swarm 模式下,也是支持的
SKYNE
   6
SKYNE  
OP
   2023 年 3 月 22 日
自己在更新 Docker-compose 至最新的 v2.17.0 版本后,运行官方示例,竟然可以了。。。\狗头
SKYNE
   7
SKYNE  
OP
   2023 年 3 月 22 日
@ryan4290 单主机运行多个 ES 实例,为了资源抢占,就限制了一下
SKYNE
   8
SKYNE  
OP
   2023 年 3 月 22 日
@privil 这么看来真的是坑挺多的
jenlors
   9
jenlors  
   2023 年 3 月 22 日
奇怪,可能是官方文档没及时更新吧,https://docs.docker.com/compose/compose-file/compose-file-v3/#deploy
> sub-options only takes effect when deploying to a swarm with docker stack deploy, and is ignored by docker-compose up and docker-compose run, except for resources.
jenlors
   10
jenlors  
   2023 年 3 月 22 日
修正,好像是说除了 resources 其它都不生效
SKYNE
   11
SKYNE  
OP
   2023 年 3 月 22 日
@jenlors thanks
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
© 2026 V2EX · 38ms · 3.9.8.5