问题描述
如何扩展服务,但使用docker-compose在每个实例上应用不同的cpuset
?
例如:我有4个cpu,我想要4个实例,每个实例使用1个唯一的cpu。
解决方法
您使用的是哪个版本的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