如何在bash中获取映射到docker容器的特定主机名的所有IP地址

时间:2019-02-22 15:20:35

标签: linux bash docker networking redis

我正在使用Docker compos扩展多个Redis容器,并希望找到一种方法来获取与bash中特定主机名相对应的所有IP地址。我有5个Redis容器,并且所有容器的主机名均为redis。我尝试使用命令getent hosts redis | awk '{ print $1 }'来获取redis Docker映像的所有IP地址,但是每次它只会返回其中一个。下面是在Redis容器之一中几次不使用awk运行命令的示例输出:

bash-4.4# getent hosts redis
172.16.0.7        redis  redis
bash-4.4# getent hosts redis
172.16.0.6        redis  redis
bash-4.4# getent hosts redis
172.16.0.5        redis  redis
bash-4.4# getent hosts redis
172.16.0.6        redis  redis

我想要一种在一个命令中获取所有IP地址的方法。有谁知道如何用bash做到这一点?

编辑:我的问题有所不同,因为我没有尝试获取主机的IP地址,而是试图通过运行bash获取与主机名匹配的所有IP地址。自己在容器中编写脚本。

1 个答案:

答案 0 :(得分:0)

我能够在容器内使用dig redis A | grep redis来做到这一点。除了一些其他信息之外,它还输出所有IP地址,因此现在我可以从输出中解析它们并将它们添加到bash数组中。