V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SKYNE
V2EX  ›  程序员

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

  •  
  •   SKYNE ·
    SKYNE0 · 2023-03-22 14:57:47 +08:00 · 1694 次点击
    这是一个创建于 610 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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-03-22 15:36:16 +08:00
    自己在更新 docker-compose 至最新的 v2.17.0 版本后,运行官方示例,竟然可以了。。。\狗头
    11 条回复    2023-03-22 17:24:39 +08:00
    privil
        1
    privil  
       2023-03-22 15:04:25 +08:00
    docker-compose 这玩意怎么说呢,维护得比较差,很多参数可能坑比较大。
    modrich
        2
    modrich  
       2023-03-22 15:16:26 +08:00
    2.启动 container 时加入--compatibility 参数
    docker-compose --compatibility up -d

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

    @jenlors 可能 docker-compose 使用的人少吧,非 swarm 模式下,也是支持的
    SKYNE
        6
    SKYNE  
    OP
       2023-03-22 15:35:40 +08:00
    自己在更新 Docker-compose 至最新的 v2.17.0 版本后,运行官方示例,竟然可以了。。。\狗头
    SKYNE
        7
    SKYNE  
    OP
       2023-03-22 15:37:01 +08:00
    @ryan4290 单主机运行多个 ES 实例,为了资源抢占,就限制了一下
    SKYNE
        8
    SKYNE  
    OP
       2023-03-22 15:37:26 +08:00
    @privil 这么看来真的是坑挺多的
    jenlors
        9
    jenlors  
       2023-03-22 16:21:35 +08:00
    奇怪,可能是官方文档没及时更新吧,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-03-22 16:22:32 +08:00
    修正,好像是说除了 resources 其它都不生效
    SKYNE
        11
    SKYNE  
    OP
       2023-03-22 17:24:39 +08:00
    @jenlors thanks
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1102 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:44 · PVG 02:44 · LAX 10:44 · JFK 13:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.