Контейнер Docker не наследует настройки DNS от хоста - PullRequest
0 голосов
/ 23 мая 2018

По какой-то причине Docker Container, который я создал как часть стека с использованием файла Docker Compose в Docker Swarm, не имеет правильных сетевых настроек.

Чтение документации Docker о сети здесь Я вижу, что:

By default, a container inherits the DNS settings of the Docker daemon, including the /etc/hosts and /etc/resolv.conf.You can override these settings on a per-container basis.

Однако, когда я создаю новый стек с помощью файла Docker ComposeФайл /etc/resolv.conf внутри контейнера не похож на файл /etc/resolv.conf хоста.В результате я не могу подключиться к серверу базы данных в той же сети.

Прямо сейчас /etc/resolv.conf на хосте выглядит так:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 10.0.0.254 search localdomain

А внутри контейнера Docker это выглядит так:

search localdomain nameserver 127.0.0.11 options ndots:0

Для создания служб я использую следующую команду:

docker stack deploy --compose-file config.compose --with-registry-auth

Файл Docker Compose довольно большой, но в основном это просто большой список сервисов, которые он должен запустить.В файле Docker Compose не определены сетевые параметры.

В качестве теста я также запустил службу не в виде стека, и эта служба правильно унаследовала файл /etc/resolv.conf.

Кто-нибудь знает, почему настройки DNS неправильно наследуются от хоста?

Характеристики системы:

ОС: Ubuntu 16.04

Докер: 18.03.1-ce, сборка 9ee9f40

...