¿Cómo puede Docker comunicarse con otros hosts en la red local utilizando nombres de host?

¿Cómo puede Docker comunicarse con otros hosts en la red local utilizando nombres de host?

Tengo dos computadoras en la misma red con los siguientes nombres de host y direcciones IP (IP dinámicas):

host1.local - 10.0.0.11
host2.local - 10.0.0.12

host1está ejecutando Docker con la configuración predeterminada.

Los contenedores host1pueden conectarse host2mediante la dirección IP 10.0.0.12, pero no pueden conectarse host2mediante el nombre de host host2.local. ¿Alguien puede decirme cómo pueden los contenedores conectarse directamente al hosts2uso de nombres de host? Tenga en cuenta que tanto los servidoreshost1, host2 están en el servidor DHCP y no tienen una dirección IP fija, por lo que debe configurar el archivo/etc/hostsno funciona en mi caso.

Respuesta1

Los contenedores Docker suelen estar en elred puente predeterminada:

Cuando inicia Docker, se crea automáticamente una red puente predeterminada (también llamada puente) y los contenedores recién iniciados se conectan a ella, a menos que se especifique lo contrario.

También puedes tener puentes definidos por el usuario con su propio servicio DNS:

Los puentes definidos por el usuario proporcionan resolución DNS automática entre contenedores.

En una red puente definida por el usuario, los contenedores pueden resolverse entre sí por nombre o alias.

Hay opciones adicionales para configurar la resolución DNS en un contenedor (consulteaquí):

De forma predeterminada, un contenedor hereda la configuración DNS del host, tal como se define en el /etc/resolv.confarchivo de configuración. Los contenedores que usan la red puente predeterminada obtienen una copia de este archivo, mientras que los contenedores que usan una red personalizada usan el servidor DNS integrado de Docker, que reenvía búsquedas de DNS externas a los servidores DNS configurados en el host.

Los hosts personalizados definidos en /etc/hosts no se heredan. Para pasar hosts adicionales a su contenedor, consulte "agregar entradas al archivo de hosts del contenedor" en la documentación de referencia de ejecución de Docker. Puede anular esta configuración por contenedor.

Yagregar entradas al archivo de hosts del contenedordice:

Puede agregar otros hosts al /etc/hostsarchivo de un contenedor usando uno o más --add-hostindicadores. Este ejemplo agrega una dirección estática para un host llamado Docker:

$ docker run --add-host=docker:93.184.216.34 --rm -it alpine

Por supuesto, también puede configurar el servidor DNS ascendente para resolver correctamente *.local. Si usa mDNS para eso, el servidor DNS ascendente debe poder usarlo.

información relacionada