【发布时间】:2019-09-19 04:20:22
【问题描述】:
我正在使用 docker 覆盖网络和 swarm 服务在多个主机上运行多个容器。所有容器都连接到同一个 docker 网络,我可以通过它们的别名在它们之间进行通信。
假设一个场景:
Host1 -> container1: alias=conA. ip: 10.0.0.4
Host2 -> container2: alias=conB, ip: 10.0.0.5
Host3 -> container3: alias=conB, ip: 10.0.0.6
从 container1 内部,如果我执行 gethostbyname(conB),它会给出 container2 或 container3 的 ip。
作为一种解决方法,我运行 gethostbyname(conB) 直到获得 2 个唯一 IP 地址。
我正在寻找的是为连接到该网络的所有容器获取一个 container_name:ip_address 表
【问题讨论】:
-
我认为 docker 使用轮询方式解析服务主机名请求,后面有多个容器。
-
是的,但我正在使用 zmq 进行通信。因此,如果我通过别名进行连接,它将连接到其中一个,然后 zmq 无法与其他容器通信。
-
你可以使用像 consul 这样的服务发现工具。
标签: docker networking docker-swarm docker-networking