¿Cómo permitir que los contenedores Docker se vean por su nombre?

Tengo una instancia de mongo ejecutándose en un contenedor llamado mongo1 eso ha expuesto el puerto 27017. Puedo conectarme bien desde el host.

Tengo otro contenedor que ejecuta una aplicación que desea conectarse a la instancia de mongo.

Cómo puedo conectar los 2 contenedores para que el nombre de host mongo1 está expuesto al otro recipiente y puede conectarse a mongo1:27017 ?

Lo que estaba sucediendo era que la red docker predeterminada no permite name >> DNS asignación.

Los contenedores de la red de puente predeterminada solo pueden acceder entre sí mediante direcciones IP, a menos que utilice la opción link link, que se considera heredada. En una red de puente definida por el usuario, los contenedores pueden resolverse entre sí por nombre o alias.

Así que creé una nueva red:

docker network create -d bridge br0

y luego agregó los contenedores a esa red:

docker network connect br0 mongo1docker network connect br0 wiki

ahora pueden verse por su nombre.

Para contenedores existentes (como solución temporal)

docker inspect <mango_container_name> | grep IPAddress

y editar / añadir /etc/hosts dentro del contenedor

docker exec -it -u 0 <app_container_name> bash

luego, desde el interior del contenedor, asigne nombre_de_contenedor a la dirección IP .. Ejemplo

echo "172.15.0.5 mango1" >> /etc/hostsexit

.......
O puede asignar un nombre de host para el contenedor durante la creación con

docker run -it -h mango1 mango_image

y / o añadir Ejemplo echo "172.17.0.5 mango1" >> /etc/hosts comando en archivos docker para menos dolores de cabeza

intente vincular el concepto de contenedor