撰写/docker-compose.yml
version: '2'
services:
worker:
image: some-image
manager:
image: some-image
environment:
# number of workers
- INSTANCES=5
networks:
default:
driver: overlay
worker 的比例是
docker-compose scale worker=5
管理容器负责将工作负载分配给工作容器。
为了达到这个目的, 管理器容器需要知道有多少 worker 以及主机名是什么。
我知道我可以使用主机“worker”或“compose_worker_1”访问第一个工作容器,使用“compose_worker_2”访问第二个容器。
但是经理怎么知道有多少 worker 呢?
我目前的解决方法是将工作人员的数量指定为环境变量,但已经运行 docker-compose scale
似乎很乏味。
我可以使用任何其他轻量级方法来发现工作人员的数量吗?
最佳答案
我会让 worker
在启动并准备好处理工作后连接回 manager
,作为“注册”。这样 manager 就不需要知道任何事情,它只需要等待 workers 自己注册。
关于networking - 如何使用 docker-compose+docker-swarm+overlay 网络发现缩放的容器主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35562498/