¿Hay algún comando que pueda ejecutar para obtener la dirección IP del contenedor directamente del host después de crear un nuevo contenedor?
Básicamente, una vez que Docker crea el contenedor, quiero rodar mi propio despliegue de código y scripts de configuración del contenedor.

Respuestas:
La
--formatopción deinspectviene al rescate.La sintaxis moderna del cliente Docker es:
La sintaxis del antiguo cliente Docker es:
Estos comandos devolverán la dirección IP del contenedor Docker.
Como se menciona en los comentarios: si está en Windows, use comillas dobles en
"lugar de comillas simples'alrededor de las llaves.fuente
<no value>respuesta en una Mac usando Fig / Boot2Docker<no value>si intenta ejecutar esto en un contenedor que no se está ejecutando. Asegúrese de que su contenedor esté funcionando antes de hacer esto.{{ .NetworkSettings.Networks.$network.IPAddress }}. El valor predeterminado parece ser bridge, pero en docker-compose, este será un nombre específico que depende del nombre de su aplicación (creo que de la bandera --project-name, aunque eso también dependerá de qué tipo de configuración de red has configurado). Escribí una respuesta completa en una respuesta aquí stackoverflow.com/questions/17157721/…Puedes usar
docker inspect <container id>.Por ejemplo:
fuente
docker inspect $CID | grep IPAddress | cut -d '"' -f 4, funciona bien :)alias dockerip='docker ps | tail -n +2 | while read cid b; do echo -n "$cid\t"; docker inspect $cid | grep IPAddress | cut -d \" -f 4; done'docker inspect -format '{{ .NetworkSettings.IPAddress }}' ${CID}docker inspect -format '{{ .NetworkSettings.IPAddress }}' ${CID}es la nueva sintaxis-formatestá en desuso, se vuelve--format.Primero obtenga la ID del contenedor:
(La primera columna es para ID de contenedor)
Use la ID del contenedor para ejecutar:
En la parte inferior, en "Configuración de red", puede encontrar "Dirección IP"
O simplemente hazlo:
fuente
docker run -it MYCONTAINER /bin/bash), ¡la salida deinspectno tiene secciónNetworkSettings!docker network inspect bridge | grep Gateway | grep -o -E '[0-9.]+'... | grep IPsolución a todos los detalles de formato necesarios para obtener IP. +1docker run -it MYIMAGE(eso no es un contenedor nombre de ); si lo hacedocker inspect MYIMAGE, obtendrá información estática sobre la imagen . Debe encontrar el nombre del contenedor en ejecución (o usar su id como lo sugieren otros). En mi sistema, el primer contenedor creado a partir de esa imagen tiene el nombre predeterminadoMYIMAGE_1, tambiéndocker inspect MYIMAGE_1NetworkSettings.Puede agregar
-ia grep para ignorar el caso, incluso lo siguiente funcionará:fuente
Para obtener todos los nombres de contenedores y sus direcciones IP en un solo comando.
Si está utilizando
docker-composeel comando será este:El resultado será:
fuente
{{.NetworkSettings.IPAddress }}a{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}docker inspect --format '{{ .NetworkSettings.IPAddress }}' $(docker ps -aq | xargs) | sed -e '/^$/d'. Lassed(1)elimina las líneas vacías para contenedores presentes, pero no tienen una dirección IP.Agregue este script de shell en su
~/.bashrcarchivo relevante:Luego, para obtener la dirección IP de un contenedor, simplemente haga esto:
Para la nueva versión de Docker, utilice lo siguiente:
fuente
Template parsing error: template: :1:19: executing "" at <.NetworkSettings.IPA...>: map has no entry for key "NetworkSettings"source ~/.bash_profileMostrar todas las direcciones IP del contenedor:
fuente
En Docker 1.3+, también puede verificarlo usando:
Ingrese el Docker en ejecución (Linux):
Para ventanas:
fuente
docker exec [container-name-or-id] ip adocker exec [container-id or container-name] ipconfigA partir de Docker versión 1.10.3, compilación 20f81dd
A menos que le diga a Docker lo contrario, Docker siempre lanza sus contenedores en la red del puente. Entonces puedes probar este comando a continuación:
Que luego debería devolver una sección de Contenedores que mostrará la dirección IP para ese contenedor en ejecución.
fuente
Ejecutar:
Esto mostrará imágenes activas de la ventana acoplable:
Use el valor de ID DE CONTENEDOR:
"172.17.0.2"
fuente
Basado en algunas de las respuestas que me encantaron, decidí fusionarlas con una función para obtener todas las direcciones IP y otra para un contenedor específico. Ahora están en mi
.bashrcarchivo.El primer comando proporciona la dirección IP de todos los contenedores y el segundo la dirección IP de un contenedor específico.
fuente
Contenedores de referencia por nombre:
Luego tome la dirección de la dirección IP por su nombre:
fuente
Escribí el siguiente script de Bash para obtener una tabla de direcciones IP de todos los contenedores que se ejecutan
docker-compose.Debe cambiar la red variable a su propio nombre de red.
fuente
Aquí hay una respuesta rápida de trabajo:
Obtenga su nombre de contenedor o ID:
Luego obtenga la IP:
Obtén el puerto:
fuente
Docker está escrito en Go y también usa la sintaxis Go para fines de consulta.
Para inspeccionar la dirección IP de un contenedor en particular, debe ejecutar el comando (
-fpara "formato"):Para la ID o nombre del contenedor, puede ejecutar el comando
que enumerará cada contenedor en ejecución.
fuente
Aquí hay una solución que desarrollé hoy en Python, usando el
docker inspect containersalida JSON como fuente de datos.Tengo muchos contenedores e infraestructuras que tengo que inspeccionar, y necesito obtener información básica de red de cualquier contenedor, de forma rápida y bonita. . Por eso hice este guión.
IMPORTANTE: desde la versión 1.9, Docker le permite crear múltiples redes y adjuntarlas a los contenedores.
El resultado es:
fuente
Lo anterior funciona si el contenedor se implementa en la red puente predeterminada.
Sin embargo, si usa una red puente personalizada o una red superpuesta, encontré que lo siguiente funciona mejor:
fuente
Para extender la respuesta de ko-dos, aquí hay un alias para enumerar todos los nombres de contenedores y sus direcciones IP:
fuente
docker ps -qpara evitartaily--formatevitar el grep. También puede pasar múltiples ID de contenedor a endocker inspectlugar de bucle en shell.docker ps -qsolo muestra las ID numéricas de los contenedores, pero creo que usar su nombre es mejor.tailes solo para deshacerse de la primera línea (encabezado de tabla) y aún es necesario. Podría utilizar--format, sin embargo:docker ps | tail -n +2 | while read -a a; do name=${a[$((${#a[@]}-1))]}; echo -ne "$name\t"; docker inspect --format="{{.NetworkSettings.IPAddress}}" $name | cut -d \" -f 4; done. Pero eso no parece una gran mejora ... lagrepOMI era más legible.docker inspect $cid | grep IPAddress | cut -d '"' -f 4 | tail -n 1Yo uso esta manera simple
p.ej
fuente
Si instaló Docker usando Docker Toolbox, puede usar la aplicación Kitematic para obtener la dirección IP del contenedor:
fuente
docker inspectno funciona cuando ejecuta docker toolbox. Informará una dirección IP, pero no es la dirección correcta que usarán sus servicios.Para obtener la dirección IP y el puerto host de un contenedor:
Salida:
fuente
¡¡¡NOTA!!! para Docker Compose Usage:
Dado que Docker Compose crea una red aislada para cada clúster, los siguientes métodos no funcionan
docker-compose.La forma más elegante y fácil es definir una función de shell, actualmente la respuesta más votada en WouterD :
Docker puede escribir ID de contenedor en un archivo como los programas de Linux:
Corriendo con
--cidfile=filename, Docker volca la ID del contenedor a "nombre de archivo".Consulte " Docker ejecuta la sección equivalente PID " para obtener más información.
Usando un archivo PID:
Ejecutando contenedor con
--cidfileparámetro, elapp.cidcontenido del archivo es como:Puede usar el contenido del archivo para inspeccionar los contenedores de Docker:
Puede extraer la IP del contenedor utilizando un script Python en línea:
Aquí hay una forma más amigable para los humanos:
Consulte " 10 alternativas para obtener las direcciones IP del contenedor Docker " para obtener más información.
fuente
Para windows 10:
fuente
Esto enumerará todas las IP del contenedor en el host:
fuente
Docker inspecciona el uso para imprimir todos los contenedores ips y sus respectivos nombres
fuente
Solo para completar:
Realmente me gusta la
--formatopción, pero al principio no estaba al tanto, así que utilicé un simple Python one-liner para obtener el mismo resultado:fuente
Combinando respuestas anteriores con la búsqueda de la ID del contenedor basada en el nombre de la imagen Docker:
fuente
Utilizar:
fuente
$ docker inspect c4591485328d | grep IPAddress | grep -v null| cut -d '"' -f 4 | head -1172.17.0.2Para uso de contenedores de Windows
donde
<container>está el nombre o la identificación del contenedor.Puede usar
docker pspara encontrar la identificación del contenedor.fuente
Si olvidó la ID del contenedor o no desea manipular con comandos de shell, es mejor usar la interfaz de usuario como Portainer.
https://portainer.io/
Allí puede encontrar toda la información sobre el contenedor también IP.
fuente