Posterior a de una larga recopilación de datos resolvimos esta pregunta que tienen ciertos usuarios. Te compartimos la respuesta y esperamos resultarte de gran ayuda.
Solución:
Respuesta corta: en la mayoría de los casos, necesitará 10.0.75.1 .
En Docker para Windows, el contenedor se comunica a través de un adaptador vEthernet llamado DockerNAT. Para encontrar sus detalles, abra el símbolo del sistema y escriba
ipconfig
Busque una entrada que se parezca a
Ethernet adapter vEthernet (DockerNAT):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::fd29:297:4583:3ad4%4
IPv4 Address. . . . . . . . . . . : 10.0.75.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
La dirección IP a la derecha de IPv4 Address
es el que necesitas.
Nota: asegúrese de que el servicio permita conexiones desde fuera de su host. En lo que respecta a ese servicio, su contenedor Docker es una máquina diferente. También asegúrese de que Windows Firewall permita la comunicación desde y hacia el servicio.
Una de las opciones que le permite conectarse de un contenedor a otro es ejecutar su contenedor con el parámetro
--net="host"
Ejemplo:
docker run -it --net="host" container_name
Luego, desde el contenedor, puede conectarse al servicio en el host usando:
localhost:port
Pero en este caso, no podrá vincular más contenedores usando --link
parámetro.
Más sobre este tema: http://phillbarber.blogspot.sk/2015/02/connect-docker-to-service-on-parent-host.html
ACTUALIZAR:
De la versión 18.03, puedes usar el nombre DNS host.docker.internal
, que se resuelve en la dirección IP interna utilizada por el host.
Más: https://docs.docker.com/docker-for-windows/networking/
En versiones anteriores, puede conectarse al servicio que se ejecuta en el host Windows utilizando la dirección IP que obtiene al ejecutar el comando ipconfig en el host -> Adaptador Ethernet -> Dirección IPv4
ACTUALIZAR
Según el comentario de Datz a continuación, docker.for.win.localhost
está funcionando en Docker para Windows (confirmado).
El anfitrión tendrá un host.docker.internal
registrado en el DNS predeterminado utilizado por los contenedores. Entonces puedes usar algo como curl http://host.docker.internal/
para acceder a un servidor web que se ejecuta en su máquina, incluso si ese servidor se está ejecutando en otro contenedor, siempre que haya expuesto el puerto.
valoraciones y reseñas
Al final de la post puedes encontrar las acotaciones de otros administradores, tú asimismo eres capaz mostrar el tuyo si lo crees conveniente.