【问题标题】:Fetch IP addresses of all the running containers from inside docker container从 docker 容器中获取所有正在运行的容器的 IP 地址
【发布时间】: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


【解决方案1】:

我假设容器 2 和 3 是单个服务的两个副本?在这种情况下,您可以查找 tasks.servicename 的主机名以获取 2 个 IP 地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-14
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多