【问题标题】:Is there a way to discover other containers on a docker network using DNS?有没有办法使用 DNS 发现 docker 网络上的其他容器?
【发布时间】:2017-01-29 00:55:24
【问题描述】:

我希望能够从 docker 容器中获取在同一 docker 网络上运行的所有容器的列表。由于如果我有主机名,内置的 docker DNS 可以给我 IP 地址,它似乎应该能够只给我一个主机名列表(也许 DNS 不能这样做,我不知道)。

我想到的其他获取容器列表的方法:

  • 将 docker 套接字绑定安装到容器中并使用docker ps。就安全性而言,这不是一个好主意。
  • 使用--link,我相信它会将条目放在/etc/hosts 中。然后我可以从那里读取它们,但这会破坏目的,因为我必须在启动容器时已经知道主机名。

我希望避免使用外部服务发现机制,但对于如何获取容器列表的所有建议,我将不胜感激。

【问题讨论】:

    标签: docker dns service-discovery


    【解决方案1】:

    实现此目的的一种简单方法是在主机中运行一个或多个 docker 命令,以循环获取您需要的信息并将其存储在已知位置(例如 bash)

    while true; do echo `docker ps --format {{.ID}}` > /SOME/KNOWN/FILE; sleep 5; done
    

    然后让容器使用卷访问此文件。

    它比提供对 docker 套接字的访问要安全得多,您可以对其进行改进以提供您需要的所有信息(例如带有名称、ip、运行时间等的 json)。

    【讨论】:

    • 如果您想限制轮询,docker events 在这里也可能有用。
    • 嗯,我明白了。不是我正在寻找的答案,而是一个聪明的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多