Obtener lista de contenedores IP de Docker

Obtener lista de contenedores IP de Docker

Digamos que tengo Docker, que ejecuta x cantidad de contenedores. ¿Es posible obtener de alguna manera una lista de todas las direcciones IP de los contenedores?

Deseo convertir esto en un guión de alguna manera.

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

Miré la API de Docker y realmente no parece tener lo que estoy buscando. Me gustaría que regresara por ejemplo:

172.17.0.2
... other ips addresses

docker inspectque existe y podría canalizar los datos y extraer el IPAddresscampo, pero eso es para un solo contenedor. Me gustaría todas las direcciones IP de los contenedores. es posible?

Respuesta1

Si desea intentar encontrar un contenedor Docker por su dirección IP, puede enumerar los ID del contenedor y sus direcciones IP de esta manera:

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

También puedes hacer algo como esto (que imprime los nombres de los contenedores en lugar de los identificadores de los contenedores):

docker ps -q | xargs docker inspect --format "{{range .NetworkSettings.Networks}}{{print .IPAddress}} {{end}}{{.Name}}"

Respuesta2

¿Qué tal lo siguiente?

for i in `docker ps -q`; do echo $i; echo " : "; docker inspect $i | grep -i ipaddress | grep -v null | cut -d ':' -f 2; done

información relacionada