По какой-то причине 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