列出连接到覆盖网络的不同机器的 Docker 容器的所有 IP 地址

问题描述 投票:0回答:1

我想在多台物理机上的 Docker 容器内运行分布式计算。为了尽可能独立于周围环境,我创建了一个 Docker 群和一个覆盖网络

my-net
,然后使用
--network=my-net
选项运行 docker 容器。这样,容器内的应用程序可以通过覆盖网络进行跨节点通信。但是,我的应用程序需要所有计算节点的 IP 地址列表,即连接到覆盖网络的所有容器的 IP 地址。

我可以使用

docker network inspect my-net
找出当前机器上连接到我的网络的所有容器。但不包括其他机器。如何才能找到这些信息?

注1:像

nmap

(扫描IP地址)这样的工具可以解决我的问题,但在这里不适用,因为我的机器位于受监控的云环境中,带有“安全扫描仪”,可以识别此类工具的使用情况视为危险行为并隔离我的机器。

注2:StackOverflow上已经存在类似的问题,例如

this,但我还没有找到针对多台机器或Docker swarms的解决方案。

docker networking docker-swarm
1个回答
0
投票
使用默认容器 dns (127.0.0.11) 附加到 my-net 的任何容器都可以使用“hostname”、“container-id”、“container_name”“hostname.my-”获取网络上任何其他容器的 IP 地址net”、“id.my-net”和“container.my-net”。

如果容器作为服务运行,则可以使用服务名称(也可以带或不带网络后缀)返回虚拟 IP 的 IP,该虚拟 IP 可以平衡服务任务和“任务”之间的争用。返回包含所有 IP 的 dnsrr 响应。

如果目标是作为堆栈一部分部署的服务,则“_”可以作为服务名称前缀。

© www.soinside.com 2019 - 2024. All rights reserved.