Как использовать пользовательские настройки DNS в плагине Drone Docker

Я использую Drone за корпоративным прокси. Когда я создаю там контейнеры Docker, Docker вставляет правильный сервер поиска, а также адреса DNS в файл контейнера /etc/resolv.conf. Однако при использовании плагина Docker исправляется только поисковый сервер, а в качестве серверов имен установлены серверы имен Google по умолчанию (8.8.8.8 или 8.8.4.4).

Это, очевидно, нарушает мою сборку, поскольку DNS-адрес моего корпоративного прокси-сервера не может быть преобразован в связанный с ним IP-адрес.

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


person Philipp Winter    schedule 25.07.2017    source источник


Ответы (1)


Это можно решить, указав в конфигурации плагина Docker адрес вашего DNS-сервера. Обратите внимание, что в приведенном ниже примере используются фиктивные IP-адреса; пожалуйста, замените ваши фактические IP-адреса.

pipeline:
  docker:
    image: plugins/docker
    custom_dns: [ 10.10.0.1, 10.10.0.2 ]

Если вы используете корпоративную версию, вы можете настроить следующую глобальную переменную среды:

- name: PLUGIN_CUSTOM_DNS
  value: 10.10.0.1,10.10.0.2


Зачем это нужно?

Почему эта проблема возникает для одних конфигураций, а не для других? И в этих случаях, почему конфигурация DNS не распространяется на Docker в Docker? И почему это работает с мостом по умолчанию, но не с сетями, определяемыми пользователем? К сожалению, в настоящее время я не могу указать основную причину, но могу предоставить некоторую информацию, которая могла бы объяснить поведение...

Кажется, что логика настройки DNS может отличаться в зависимости от вашей версии Docker, конфигурации хост-машины и т. д.

Точные сведения о том, как Docker управляет конфигурациями DNS внутри контейнера, могут меняться от одной версии Docker к другой. Таким образом, вы не должны предполагать, как файлы, такие как /etc/hosts, /etc/resolv.conf, управляются внутри контейнеров, и оставлять файлы в покое и вместо этого использовать следующие параметры Docker.

Также кажется, что мостовая сеть по умолчанию ведет себя иначе, чем определяемые пользователем мостовые сети:

Для обеспечения обратной совместимости конфигурация DNS в мостовой сети по умолчанию сохраняется без изменения поведения. Пожалуйста, обратитесь к DNS в сети моста по умолчанию для получения дополнительной информации о конфигурации DNS в сети моста по умолчанию.

Я хотел бы предоставить подробную техническую основную причину этой проблемы и надеюсь, что кто-то сможет заполнить пробелы для этого ответа. Тем временем, пожалуйста, используйте обходной путь, описанный выше.

person Brad Rydzewski    schedule 25.07.2017