У меня есть два компьютера в одной сети со следующими именами хостов и IP-адресами (динамические IP-адреса):
host1.local - 10.0.0.11
host2.local - 10.0.0.12
host1
работает под управлением Docker с конфигурацией по умолчанию.
Контейнеры в host1
могут подключаться к host2
с использованием IP-адреса 10.0.0.12
, но не могут подключаться к host2
с использованием имени хоста host2.local
. Может кто-нибудь, пожалуйста, дайте мне знать, как контейнеры могут напрямую подключаться к hosts2
с использованием имен хостов. Обратите внимание, что оба сервера host1, host2
находятся на DHCP-сервере и не имеют фиксированного IP-адреса, поэтому настройка файла/etc/хостыв моем случае не работает.
решение1
Контейнеры Docker обычно находятся всеть мостов по умолчанию:
При запуске Docker автоматически создается сеть мостов по умолчанию (также называемая мостом), и вновь запускаемые контейнеры подключаются к ней, если не указано иное.
Вы также можете иметь определяемые пользователем мосты с собственной службой DNS:
Определяемые пользователем мосты обеспечивают автоматическое разрешение DNS между контейнерами.
В определяемой пользователем мостовой сети контейнеры могут разрешать друг друга по имени или псевдониму.
Существуют дополнительные параметры настройки разрешения DNS в контейнере (см.здесь):
По умолчанию контейнер наследует настройки DNS хоста, как определено в
/etc/resolv.conf
файле конфигурации. Контейнеры, которые используют сеть моста по умолчанию, получают копию этого файла, тогда как контейнеры, которые используют пользовательскую сеть, используют встроенный DNS-сервер Docker, который перенаправляет внешние DNS-запросы на DNS-серверы, настроенные на хосте.Пользовательские хосты, определенные в /etc/hosts, не наследуются. Чтобы передать дополнительные хосты в ваш контейнер, обратитесь к разделу "добавить записи в файл хостов контейнера" в справочной документации по запуску docker. Вы можете переопределить эти настройки для каждого контейнера.
Идобавить записи в файл хостов контейнераговорит:
Вы можете добавить другие хосты в файл контейнера,
/etc/hosts
используя один или несколько--add-host
флагов. Этот пример добавляет статический адрес для хоста с именем docker:$ docker run --add-host=docker:93.184.216.34 --rm -it alpine
Конечно, вы также можете настроить DNS-сервер верхнего уровня для правильного разрешения *.local
. Если вы используете mDNS для этого, DNS-сервер верхнего уровня должен иметь возможность его использовать.