Как разрешить контейнерам docker видеть друг друга по их именам?

У меня есть экземпляр mongo, запущенный в контейнере с именем mongo1 это открыло порт 27017. Я могу просто отлично подключиться с хоста.

У меня есть другой контейнер, в котором запущено приложение, которое хочет подключиться к экземпляру mongo.

Как я могу подключить 2 контейнера так, чтобы имя хоста mongo1 подвергается воздействию другого контейнера, и он может подключаться к mongo1:27017 ?

Что происходило, так это то, что сеть docker по умолчанию не позволяет name >> DNS отображение.

Контейнеры в мостовой сети по умолчанию могут получать доступ друг к другу только по IP-адресам, если вы не используете опцию --link, которая считается устаревшей. В пользовательской мостовой сети контейнеры могут разрешать друг друга по имени или псевдониму.

Поэтому я создал новую сеть:

docker network create -d bridge br0

а затем добавил контейнеры в эту сеть:

docker network connect br0 mongo1docker network connect br0 wiki

теперь они могут видеть друг друга по имени.

Для существующих контейнеров (в качестве временного решения)

docker inspect <mango_container_name> | grep IPAddress

и редактировать/добавлять /etc/hosts внутри контейнера

docker exec -it -u 0 <app_container_name> bash

затем изнутри контейнера сопоставьте имя_контейнера с IP-адресом .. Пример

echo "172.15.0.5 mango1" >> /etc/hostsexit

.......
Или вы можете назначить имя хоста для контейнера во время его создания с помощью

docker run -it -h mango1 mango_image

и/или добавить пример echo "172.17.0.5 mango1" >> /etc/hosts команда в файлах docker для уменьшения головной боли

попробуйте связать концепцию контейнера