Это можно решить, указав в конфигурации плагина 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