Не удается выполнить поиск DNS на «внешних» DNS-серверах? - PullRequest
0 голосов
/ 24 февраля 2019

Я пытаюсь исправить ошибку в моем стеке Docker в течение последних нескольких недель, но безрезультатно.

Это рассматриваемый файл compose (сокращен до соответствующего материала):

version: '3.7'
services:
  php:
    ...
    dns:
      - 1.1.1.1
      - 1.0.0.1
networks:
  default:
    internal: true
      driver: overlay

Он развертывается очень хорошо, пока мне не придется делать что-либо , требующее "внешнего" DNS-запроса.
Например.в моем контейнере я вручную запускаю curl https://www.google.com.
Это приводит к следующей ошибке

curl: (6) Не удалось разрешить хост: google.com

Это содержимое моего /etc/resolv.conf внутри контейнера:

search finlaydag33k.nl
nameserver 127.0.0.11
options ndots:0

Запуск docker inspect -f '{{.HostConfig.DNS}}' container-id приводит к следующему выводу:

[1.1.1.1 1.0.0.1]

У меня вопрос, что я делаю не так и как я могу это исправить?Он может обращаться к сервисам в пределах одного и того же стека по имени DNS, но это не касается доменов, которым требуется внешний DNS (как 1.1.1.1 или 8.8.8.8).Мой брандмауэр не блокирует ничего.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Это немного "дох" момент.
Очевидно (хотя я не мог найти это в документах), контейнер подключен только к сети default, которая является сетью overlay.
Это означает, что необходимо явно добавить сеть bridge (она уже должна присутствовать в вашем рое) к этому контейнеру (а также явно подключить его к сети default, чтобы он мог связываться с другими контейнерами встек).

Это не было задокументировано, поэтому я предположил, что оно уже может достигнуть внешней стороны.
После ручного добавления сетей default и bridge в контейнер все работает как положено.

version: '3.7'
services:
  php:
    ...
    networks:
      - default
      - bridge
    dns:
      - 1.1.1.1
      - 1.0.0.1
networks:
  default:
    internal: true
      driver: overlay
  bridge:
    external: true
0 голосов
/ 25 февраля 2019

Попробуйте добавить сервер пересылки DNS в /etc/resolv.conf, добавив

  server=8.8.8.8
  server=1.1.1.1

Посмотрите, разрешает ли curl разрешение Google после добавления этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...