我想在多台物理机上的 Docker 容器内运行分布式计算。为了尽可能独立于周围环境,我创建了一个 Docker 群和一个覆盖网络
my-net
,然后使用 --network=my-net
选项运行 docker 容器。这样,容器内的应用程序可以通过覆盖网络进行跨节点通信。但是,我的应用程序需要所有计算节点的 IP 地址列表,即连接到覆盖网络的所有容器的 IP 地址。
我可以使用
docker network inspect my-net
找出当前机器上连接到我的网络的所有容器。但不包括其他机器。如何才能找到这些信息?
注1:像nmap
(扫描IP地址)这样的工具可以解决我的问题,但在这里不适用,因为我的机器位于受监控的云环境中,带有“安全扫描仪”,可以识别此类工具的使用情况视为危险行为并隔离我的机器。注2:StackOverflow上已经存在类似的问题,例如
如果容器作为服务运行,则可以使用服务名称(也可以带或不带网络后缀)返回虚拟 IP 的 IP,该虚拟 IP 可以平衡服务任务和“任务”之间的争用。返回包含所有 IP 的 dnsrr 响应。
如果目标是作为堆栈一部分部署的服务,则“_”可以作为服务名称前缀。