Как Docker может взаимодействовать с другими хостами в локальной сети, используя имена хостов?

Как Docker может взаимодействовать с другими хостами в локальной сети, используя имена хостов?

У меня есть два компьютера в одной сети со следующими именами хостов и 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-сервер верхнего уровня должен иметь возможность его использовать.

Связанный контент