Estoy usando Docker para Mac. Estoy ejecutando un microservicio basado en nodejs en un contenedor Docker. Quiero probar el microservicio de nodo a través del navegador. ¿Cómo obtener la dirección IP del contenedor Docker en ejecución?
Estoy usando Docker para Mac. Estoy ejecutando un microservicio basado en nodejs en un contenedor Docker. Quiero probar el microservicio de nodo a través del navegador. ¿Cómo obtener la dirección IP del contenedor Docker en ejecución?
Respuestas:
Si no desea asignar puertos desde su host al contenedor, puede acceder directamente a la ip del rango de docker para el contenedor. De forma predeterminada, solo se accede a este rango desde su host. Puede verificar los datos de su red de contenedores haciendo:
docker inspect <containerNameOrId>
Probablemente sea mejor filtrar:
docker inspect <containerNameOrId> | grep '"IPAddress"' | head -n 1
Por lo general, el rango de IP predeterminado de la ventana acoplable es 172.17.0.0/16
. Su host debería ser 172.17.0.1
y su primer contenedor debería serlo 172.17.0.2
si todo es normal y no especificó ninguna opción de red especial.
EDITAR Otra forma más elegante de usar las funciones de Docker en lugar de "bash tricking":
docker inspect -f "{{ .NetworkSettings.IPAddress }}" <containerNameOrId>
localhost
:)
http://172.17.0.2:anyPort
desde el host. Por supuesto, si desea acceder a él utilizando localhost en el host, debe asignar puertos. Verá lo que quiere el OP.
docker run --name struts --rm -i tomcat
2. Obtenga la ip de su contenedor (si solo tiene uno): docker inspect struts | grep '"IPAddress"' | head -n 1
3. Ábralo en el navegador del host http://x.x.x.x:8080
. Puede ver la página predeterminada de Apache Tomcat.
Use la --format
opción para obtener solo la dirección IP en lugar de la información completa del contenedor:
sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID>
Para los motores docker modernos, use este comando:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
y para motores más antiguos use:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id
si desea obtenerlo directamente dentro del contenedor, puede intentar
ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep 172.17
Para mi caso, a continuación funcionó en Mac :
No pude acceder a las direcciones IP del contenedor directamente en Mac. Necesito usar localhost
con el reenvío de puertos, por ejemplo, si el puerto es 8000, entonceshttp://localhost:8000
Consulte https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds
La respuesta original fue de: https://github.com/docker/for-mac/issues/2670#issuecomment-371249949
No puede acceder a la IP de la ventana acoplable desde fuera de esa máquina host. Si su navegador está en otra máquina, es mejor asignar el puerto del host al puerto del contenedor pasando -p 8080:8080
al comando ejecutar.
Pasando -p
, puede asignar el puerto del host al puerto del contenedor y se configura un proxy para reenviar todo el tráfico de dicho puerto del host al puerto del contenedor designado.