是否有办法使用DNS发现docker网络上的其他容器?

是否有办法使用DNS发现docker网络上的其他容器?,docker,dns,service-discovery,Docker,Dns,Service Discovery,我希望能够从docker容器中获取在同一docker网络上运行的所有容器的列表。由于内置的docker DNS可以给我IP地址,如果我有主机名,它似乎应该能够给我一个主机名列表(也许DNS不能做到这一点,我不知道) 我想到的获取容器列表的其他方法: 绑定将docker套接字安装到容器中,并使用docker ps。就安全而言,这不是个好主意 使用--link,我相信它会将条目放在/etc/hosts中。然后我可以从那里读到它们,但这样做并没有达到目的,因为在启动容器时,我必须已经知道主机名 我

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

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

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

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

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

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


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

如果您想限制轮询,这里可能也很有用。嗯,我明白了。不是我想要的答案,而是一个聪明的解决方案。
while true; do echo `docker ps --format {{.ID}}` > /SOME/KNOWN/FILE; sleep 5; done