
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
Sé docker inspect
que existe y podría canalizar los datos y extraer el IPAddress
campo, 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