我希望能够从docker容器中获取在同一个docker网络上运行的所有容器的列表。由于内置的docker DNS可以给我IP地址,如果我有主机名,似乎它应该只能给我一个主机名列表(也许DNS不能这样做,我不知道)。 / p>
我想到了获取容器列表的其他方法:
docker ps
。就安全而言,这不是一个好主意。--link
中放置条目的/etc/hosts
。然后我可以从那里读取它们,但是这种方法会失败,因为当我启动容器时我必须知道主机名。我希望避免使用外部服务发现机制,但我希望了解如何获取容器列表的所有建议。
答案 0 :(得分:0)
实现此目的的一种简单方法是在主机中运行一个或多个docker命令,以便在循环中获取所需信息并将其存储在已知位置(例如bash中)
while true; do echo `docker ps --format {{.ID}}` > /SOME/KNOWN/FILE; sleep 5; done
然后让容器使用卷访问此文件。
它比提供对docker socket的访问更安全,你可以改进它以提供你需要的所有信息(ex json的名字,ip,运行时间等)。