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

Is there a way to discover other containers on a docker network using DNS?

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

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

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

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

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

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

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