首页 > 解决方案 > 如何在bash中获取映射到docker容器的特定主机名的所有IP地址

问题描述

我正在使用 Docker compose 扩展几个 Redis 容器,并希望找到一种方法来获取与 bash 中特定主机名相对应的所有 IP 地址。我有 5 个 Redis 容器,它们都有 hostname 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 地址。

标签: linuxbashdockernetworkingredis

解决方案


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


推荐阅读