Докер не разрешает имя хоста

Мне нужно знать имена хостов (или IP-адреса) какого-либо контейнера, работающего на той же машине. Как я уже прокомментировал здесь (но пока без ответа), я использую docker-compose, В документации сказано, что compose автоматически создаст запись имени хоста для всех контейнеров, определенных в том же docker-compose.yml файл:

Каждый контейнер для службы присоединяется к сети по умолчанию и доступен для других контейнеров в этой сети и может быть обнаружен ими с именем хоста, идентичным имени контейнера.

Но я не вижу ни одной записи хоста через docker exec -it my_container tail -20 /etc/hosts, Я тоже пытался добавить links в мой контейнер, но ничего не изменилось.

1 ответ

Решение

Docker 1.10 представил некоторые новые сетевые функции, которые включают внутренний DNS-сервер, на котором выполняется поиск хоста.

В мостовой сети по умолчанию (docker0) поиски продолжают работать через /etc/hosts как они привыкли. /etc/resolv.conf будет указывать на ваши резольверы хостов.

В определенной пользователем сети Docker будет использовать внутренний DNS-сервер. /etc/resolv.conf будет иметь внутренний IP-адрес для сервера Docker DNS. Эта настройка позволяет мостовым, пользовательским и оверлейным сетям работать аналогичным образом. Таким образом, оверлейная сеть на рое будет заполнять данные хоста со всего роя, как это делает локальная мостовая сеть.

"Устаревшая" настройка была сохранена, чтобы новые сетевые функции могли быть введены без влияния на существующие установки.

открытие

DNS-распознаватель может предоставлять IP-адреса для службы создания докеров через имя этой службы.

Например, с web а также db сервис определен, а db сервис масштабируется до 3, все db экземпляры будут разрешать:

$ docker-compose run web nslookup db

Name:      db
Address 1: 172.22.0.4 composenetworks_db_2.composenetworks_mynet
Address 2: 172.22.0.5 composenetworks_db_3.composenetworks_mynet
Address 3: 172.22.0.3 composenetworks_db_1.composenetworks_mynet
Другие вопросы по тегам