【问题标题】:docker-compose scale with different cpusetdocker-compose 使用不同的 cpuset 进行缩放
【发布时间】:2020-12-29 00:39:45
【问题描述】:

如何扩展服务,但使用 docker-compose 在每个实例上应用不同的 cpuset

例如:我有 4 个 cpu,我想要 4 个实例,每个实例使用 1 个唯一的 cpu。

【问题讨论】:

    标签: docker docker-compose scale cpuset


    【解决方案1】:

    您使用的是什么版本的 docker-compose?我之所以问,是因为只有使用 docker-compose v2.x 或 docker-swarm 才能实现您想要的,如下所示。

    您可以在 docker 文档中查看更多信息 here

    假设您使用的是 docker-compose 2.4,您可以在 `docker-compose.yaml 中定义这样的服务

    version: '2.4'
    
    services:
      redis:
        image: redis:1.0.0
        restart: always
        environment:
          - REDIS_PASSWORD=1234
        cpu_count: 1
        mem_limit: 200m
    
    

    其中cpu_count 是您要在服务中使用的cpu 核心数,mem_limit 是您的服务可以消耗的内存限制。

    要定义必须运行的副本数: docker-compose up --scale redis=2

    redis 是 docker-compose 中服务的名称,2 是您想要的副本数。因此,这两个容器都将以 1 个 CPU 核心和 200m 内存启动。

    要检查容器资源消耗,您可以运行docker stats

    来源: https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources

    https://docs.docker.com/compose/compose-file/compose-file-v2/#cpu-and-other-resources

    【讨论】:

    • 感谢您的回答!我正在使用 docker-compose v3.8。我还不熟悉 swarm,所以我可能需要更深入地了解它。
    • 在阅读了关于从 v3 docker-compose 中删除非 swarm 配置的长 github 线程 (github.com/docker/compose/issues/4513) 之后,事实证明 v2 应该用于非 swarm 用途(其中并没有真正的意义,但无论如何......)。既然我正在使用 docker-compose v2.4,你对我的第一个问题有解决方案吗?
    • 我编辑了我的答案,希望对你有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2017-05-27
    • 2023-03-30
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多