【发布时间】:2020-12-29 00:39:45
【问题描述】:
如何扩展服务,但使用 docker-compose 在每个实例上应用不同的 cpuset?
例如:我有 4 个 cpu,我想要 4 个实例,每个实例使用 1 个唯一的 cpu。
【问题讨论】:
标签: docker docker-compose scale cpuset
如何扩展服务,但使用 docker-compose 在每个实例上应用不同的 cpuset?
例如:我有 4 个 cpu,我想要 4 个实例,每个实例使用 1 个唯一的 cpu。
【问题讨论】:
标签: docker docker-compose scale cpuset
您使用的是什么版本的 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
【讨论】: