Como permitir que os contêineres do docker se vejam pelo nome?

Eu tenho uma instância mongo em execução em um contêiner chamado mongo1 isso expôs o porto 27017. Eu posso me conectar muito bem do host.

Eu tenho outro contêiner que está executando um aplicativo que deseja se conectar à instância mongo.

Como posso conectar os 2 contêineres para que o nome do host mongo1 é exposto ao outro recipiente e pode se conectar a mongo1:27017 ?

O que estava acontecendo era que a rede docker padrão não permite name >> DNS mapeamento.

Os contêineres na rede de ponte padrão só podem acessar uns aos outros por endereços IP, a menos que você use a opção --link, que é considerada legada. Em uma rede de Ponte definida pelo usuário, os contêineres podem se resolver por nome ou alias.

Então eu criei uma nova rede:

docker network create -d bridge br0

e então adicionou os contêineres a essa rede:

docker network connect br0 mongo1docker network connect br0 wiki

agora eles podem se ver pelo nome.

Para contêineres existentes (como solução temporária)

docker inspect <mango_container_name> | grep IPAddress

e edite / adicionar /etc/hosts dentro do recipiente

docker exec -it -u 0 <app_container_name> bash

em seguida, de dentro do container map container_name com o endereço IP .. Exemplo

echo "172.15.0.5 mango1" >> /etc/hostsexit

.......
Ou você pode atribuir o nome do host para o contêiner durante a instalação com

docker run -it -h mango1 mango_image

e / ou adicionar exemplo echo "172.17.0.5 mango1" >> /etc/hosts comando em arquivos docker para menos dor de cabeça

tente vincular entre o conceito de contêiner