¿Cómo es posible resolver los nombres definidos en /etc/hosts del host Docker en contenedores? Los contenedores que se ejecutan en mi host Docker pueden resolver nombres públicos (por ejemplo, www.ibm.com), por lo que Docker dns funciona bien. Me gustaría resolver los nombres de los hosts de Docker (por ejemplo, 127.17.0.1 smtp) de los contenedores.
Mi objetivo final es conectarme a los servicios que se ejecutan en el host Docker (por ejemplo, el servidor smtp) desde los contenedores. Sé que puedo usar Docker Host IP (127.17.0.1) desde contenedores, pero pensé que Docker también habría usado Docker host /etc/hosts para crear archivos de resolución de contenedores.
Incluso estoy bastante seguro de haberlo visto funcionar hace un tiempo... pero podría estar equivocado.
¿Alguna idea?
Juan
Consulte el --add-host para el comando docker : https://docs.docker.com/engine/reference/run/#managing-etchosts
$ docker run --add-host="smtp:127.17.0.1" container command
En Docker, /etc/hosts no se puede sobrescribir ni modificar en tiempo de ejecución (característica de seguridad). Debe usar la API de Docker, en este caso --add-host para modificar el archivo.
Para docker-compose , use la opción extra_hosts .
Para conocer todo el problema de "conectarse a los servicios que se ejecutan en el host", consulte la discusión en este número de GitHub: https://github.com/docker/docker/issues/1143 .
El enfoque común para este problema es usar --add-host con la dirección de puerta de enlace de Docker para el host, por ejemplo, --add-host="dockerhost:172.17.42.1" . Verifique el problema anterior para ver algunos scripts que encuentran la IP correcta e inician sus contenedores.
Puede configurar en el servidor DNS simple del host y en la configuración del contenedor /etc/resolve.conf para el servidor DNS del host Docker.
Por ejemplo, en dnsmasq puede agregar addn-hosts=/etc/hosts al archivo de configuración. Entonces, el contenedor, al usar el servidor DNS del host Docker, podrá resolver los hosts /etc/hosts.