Я пытаюсь понять проблему с идентичными контейнерами докеров, которые запускаются на разных хостах, где один контейнер может найти/ping/nslookup для домена в частной сети и другой не может. Один хост - OSX 10.11, другой - Ubuntu 16.04. Оба запускают докер 1.12. Я использую docker-compose
, чтобы открыть приложение, и я надеюсь выяснить, что происходит и как его исправить, или некоторые изменения конфигурации, которые я мог бы сделать, не прибегая к доменам жесткого кодирования или IP-адресам, которые заставили бы контейнер вести себя то же самое на обоих хостах.Docker: контейнер не может найти домен в частной сети
На моем OSX поля, у меня есть следующие неймсерверы DNS установлен автоматически мой домен:
osx:$ cat /etc/resolv.conf
domain redacted.lan
nameserver 172.16.20.19
nameserver 10.43.0.11
Я знаю, что resolv.conf
не используется большинство инструментов OSX, но Системные настройки> Сеть показывает те же настройки.
У меня есть аналогичные настройки на моей Ubuntu 16 коробки, а также (команда из https://askubuntu.com/questions/152593/command-line-to-list-dns-servers-used-by-my-system):
ubu:$ cat /etc/resolv.conf
nameserver 127.0.1.1
search redacted.lan
ubu:$ nmcli device show eno1 | grep IP4.DNS
IP4.DNS[1]: 172.16.20.19
IP4.DNS[2]: 10.43.0.11
Тогда как на OSX и Ubuntu, я начинаю свой контейнер с этим:
$ docker run -it redacted_web bash
И затем я запускаю эти команды для диагностики моей проблемы:
$ apt-get update
$ apt-get install -y dnsutils
$ cat /etc/resolv.conf
$ nslookup redacted.lan
На OSX, выход из последних 2-х команд:
[email protected]:/app# cat /etc/resolv.conf
search local
nameserver 192.168.65.1
[email protected]:/app# nslookup redacted.lan
Server: 192.168.65.1
Address: 192.168.65.1#53
Name: redacted.lan
Address: 172.18.0.23
В Ubuntu, выход:
[email protected]:/app# cat /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
search redacted.lan
nameserver 8.8.8.8
nameserver 8.8.4.4
[email protected]:/app# nslookup redacted.lan
Server: 8.8.8.8
Address: 8.8.8.8#53
** server can't find redacted.lan: NXDOMAIN
Возможные различия я могу думать:
- На OSX есть является vm, работающим докере, где, как и на ubuntu, является родным
- На Ubuntu докер запускается с
sudo
, возможно, собирает различные настройки конфигурации s
У меня такая же проблема. Очень хорошо написанное описание проблемы. Позор, пока еще нет простого исправления, кроме отключения dnsmasq. – mkasberg