¿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
--format
opción deinspect
viene 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-format
está 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 deinspect
no tiene secciónNetworkSettings
!docker network inspect bridge | grep Gateway | grep -o -E '[0-9.]+'
... | grep IP
solució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_1
NetworkSettings.Puede agregar
-i
a 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-compose
el 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
~/.bashrc
archivo 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_profile
Mostrar 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 a
docker exec [container-id or container-name] ipconfig
A 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
.bashrc
archivo.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 (
-f
para "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 container
salida 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 -q
para evitartail
y--format
evitar el grep. También puede pasar múltiples ID de contenedor a endocker inspect
lugar de bucle en shell.docker ps -q
solo muestra las ID numéricas de los contenedores, pero creo que usar su nombre es mejor.tail
es 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 ... lagrep
OMI era más legible.docker inspect $cid | grep IPAddress | cut -d '"' -f 4 | tail -n 1
Yo 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 inspect
no 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
--cidfile
parámetro, elapp.cid
contenido 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
--format
opció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 -1
172.17.0.2
Para uso de contenedores de Windows
donde
<container>
está el nombre o la identificación del contenedor.Puede usar
docker ps
para 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