У меня есть экземпляр 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 для уменьшения головной боли
попробуйте связать концепцию контейнера