docker swarm 如何限制特定微服务在某个节点上启动的分片数?比如我有两台机器,A服务启动两个分片,我现在需要每个机器上各起一片且只允许起一片,需要全部使用compose实现
时间: 2024-05-02 14:20:47 浏览: 5
可以在docker-compose文件中使用constraints来限制特定微服务在某个节点上启动的分片数。具体方法如下:
1. 在docker-compose文件中给每个服务添加constraints属性,指定该服务只能在特定节点上启动。例如:
```
version: '3'
services:
serviceA:
image: someimage
deploy:
placement:
constraints:
- node.labels.type == worker1
...
serviceB:
image: someimage
deploy:
placement:
constraints:
- node.labels.type == worker2
...
```
2. 使用replicas属性指定每个服务的副本数。例如:
```
version: '3'
services:
serviceA:
image: someimage
deploy:
placement:
constraints:
- node.labels.type == worker1
replicas: 2
...
serviceB:
image: someimage
deploy:
placement:
constraints:
- node.labels.type == worker2
replicas: 1
...
```
3. 最后,使用docker stack deploy命令部署docker-compose文件。例如:
```
docker stack deploy -c docker-compose.yml myapp
```
这样,serviceA服务的两个副本将只在worker1节点上启动,而serviceB服务的一个副本将只在worker2节点上启动。