
Digamos que eu tenha o docker, que está executando uma quantidade x de contêineres. É possível obter de alguma forma uma lista de todos os endereços IP dos contêineres?
Desejo transformar isso em um script de alguma forma.
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
Eu olhei para a API do Docker e ela realmente não parece ter o que estou procurando. Eu gostaria que retornasse, por exemplo:
172.17.0.2
... other ips addresses
Eu sei docker inspect
que existe e poderia canalizar os dados e extrair o IPAddress
campo, mas isso é para um único contêiner. Gostaria de todos os endereços IP dos contêineres. Isso é possível?
Responder1
Se você quiser tentar encontrar um contêiner Docker por seu endereço IP, você pode listar os IDs do contêiner e seus endereços IP da seguinte forma:
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
Você também pode fazer algo assim (que imprime nomes de contêineres em vez de IDs de contêineres):
docker ps -q | xargs docker inspect --format "{{range .NetworkSettings.Networks}}{{print .IPAddress}} {{end}}{{.Name}}"
Responder2
Que tal o abaixo?
for i in `docker ps -q`; do echo $i; echo " : "; docker inspect $i | grep -i ipaddress | grep -v null | cut -d ':' -f 2; done