如何使用 docker-compose+docker-swarm+overlay 网络发现缩放容器主机?
How do I discover scaled container hosts with docker-compose+docker-swarm+overlay networking?
compose/docker-compose.yml
version: '2'
services:
worker:
image: some-image
manager:
image: some-image
environment:
# number of workers
- INSTANCES=5
networks:
default:
driver: overlay
工人的比例是
docker-compose scale worker=5
管理容器负责将工作负载分配给工作容器。
为了实现这一点,
管理器容器需要知道有多少工人以及主机名是什么。
我知道我可以通过主机 "worker" 或 "compose_worker_1" 到达第一个工作容器,通过 "compose_worker_2" 到达第二个容器。
但是经理怎么知道有多少工人呢?
我目前的解决方法是将工作人员的数量指定为环境变量,但已经 运行 docker-compose scale
.
似乎很乏味
有没有其他轻量级的方法可以用来发现工人的数量?
我会让 worker
在 manager
启动并准备好处理工作后与 manager
建立连接,作为 "registration"。这样manager什么都不需要知道,只等worker自己注册。
compose/docker-compose.yml
version: '2'
services:
worker:
image: some-image
manager:
image: some-image
environment:
# number of workers
- INSTANCES=5
networks:
default:
driver: overlay
工人的比例是
docker-compose scale worker=5
管理容器负责将工作负载分配给工作容器。
为了实现这一点, 管理器容器需要知道有多少工人以及主机名是什么。
我知道我可以通过主机 "worker" 或 "compose_worker_1" 到达第一个工作容器,通过 "compose_worker_2" 到达第二个容器。
但是经理怎么知道有多少工人呢?
我目前的解决方法是将工作人员的数量指定为环境变量,但已经 运行 docker-compose scale
.
有没有其他轻量级的方法可以用来发现工人的数量?
我会让 worker
在 manager
启动并准备好处理工作后与 manager
建立连接,作为 "registration"。这样manager什么都不需要知道,只等worker自己注册。