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