Hay varias discusiones de larga data sobre cómo hacer esto de una manera consistente, bien entendida y portátil. No hay una resolución completa pero lo vincularé a las discusiones a continuación.
En cualquier caso, puede intentar usar la opción --add-host para ejecutar Docker para agregar la dirección IP del host en el archivo / etc / host del contenedor. Desde allí, es trivial conectarse al host en cualquier puerto requerido:
Agregar entradas a un archivo de hosts de contenedor
Puede agregar otros hosts al archivo / etc / hosts de un contenedor utilizando uno o más indicadores --add-host. Este ejemplo agrega una dirección estática para un host llamado docker:
$ docker run --add-host=docker:10.180.0.1 --rm -it debian
$$ ping docker
PING docker (10.180.0.1): 48 data bytes
56 bytes from 10.180.0.1: icmp_seq=0 ttl=254 time=7.600 ms
56 bytes from 10.180.0.1: icmp_seq=1 ttl=254 time=30.705 ms
^C--- docker ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 7.600/19.152/30.705/11.553 ms
Nota: A veces necesita conectarse al host Docker, lo que significa obtener la dirección IP del host. Puede usar los siguientes comandos de shell para simplificar este proceso:
$ alias hostip="ip route show 0.0.0.0/0 | grep -Eo 'via \S+' | awk '{ print $2 }'"
$ docker run --add-host=docker:$(hostip) --rm -it debian
Documentación:
https://docs.docker.com/engine/reference/commandline/run/
Debates sobre cómo acceder al host desde el contenedor:
https://github.com/docker/docker/issues/1143
https://github.com/docker/docker/issues/10023