Не удается выполнить поиск DNS на "внешних" DNS-серверах?

Последние несколько недель я пытаюсь исправить ошибку в стеке Docker, но безрезультатно.

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

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 ответа

Это немного "до" момент.
Очевидно (хотя я не мог найти это в документах), контейнер только подключен к 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

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

  server=8.8.8.8
  server=1.1.1.1

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

Другие вопросы по тегам