1

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

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

4

1 回答 1

0

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

在此处输入图像描述

您可以在docker doc 中查看更多信息。

假设您使用的是 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

redisdocker-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

于 2020-09-10T14:28:14.713 回答