如何使用 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.

似乎很乏味

有没有其他轻量级的方法可以用来发现工人的数量?

我会让 workermanager 启动并准备好处理工作后与 manager 建立连接,作为 "registration"。这样manager什么都不需要知道,只等worker自己注册。