假设我有 docker,它正在运行 x 个容器。是否有可能以某种方式获取所有容器 IP 地址的列表?
我希望以某种方式将其融入脚本中。
docker ps -a
:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
614497a23ca7 mongo "/entrypoint.sh mongo" 7 minutes ago Up 7 minutes 27017/tcp some-mongo
我查看了 docker api,但它似乎并没有我想要的东西。我希望它返回例如:
172.17.0.2
... other ips addresses
我知道docker inspect
存在,我可以通过管道传输数据并提取字段IPAddress
,但那只适用于单个容器。我想要所有容器的 IP 地址。这可能吗?
答案1
如果你想尝试通过 IP 地址查找 Docker 容器,你可以列出容器 ID 及其 IP 地址,如下所示:
for container in `docker ps -q`; do ips=`docker inspect $container | grep -i ipaddress | grep -v null | grep -v \"\" | cut -d ':' -f 2`; echo $container$ips; done
您还可以做这样的事情(打印出容器名称而不是容器 ID):
docker ps -q | xargs docker inspect --format "{{range .NetworkSettings.Networks}}{{print .IPAddress}} {{end}}{{.Name}}"
答案2
下面怎么样?
for i in `docker ps -q`; do echo $i; echo " : "; docker inspect $i | grep -i ipaddress | grep -v null | cut -d ':' -f 2; done