Docker не может разрешить хосты, которым требуется несколько серверов имен


1

Я использую контейнер Docker, который клонирует некоторые git-репозитории и строит проект внутри себя.

Он клонирует код из 2 разных репозиториев: один публичный github.com а другой частный my.companys.github.enterprise.net и доступен только через VPN.

В моем resolv.conf У меня есть 2 сервера имен: один для общественных служб и один для VPN:

nameserver 8.8.8.8
nameserver 10.10.3.3

Когда я пытаюсь клонировать репозитории внутри моего док-контейнера, он может разрешить только github.com репозитории и не могут разрешить my.companys.github.enterprise.net Хранилища.

Если я переключаюсь по линиям в моем resolv.confтогда это может решить только my.companys.github.enterprise.net а не github.com из них.

Есть ли способ разрешить Docker разрешать обе ссылки на репозитории, используя 2 разных сервера имен из resolv.conf вместо того, чтобы просто попробовать первый?


1
Может быть, вы можете установить в DNS вашей компании сервер пересылки (я имею в виду Интернет-сервер пересылки) и, установив его на первое место, вы сможете разрешить все. Если не возможно изменить DNS-сервер компании ... не знаю, как решить.
OscarAkaElvis

Если первый сервер имен отвечает ВСЕ (даже с «Я не знаю это имя / адрес»), то следующий не будет проверен. Предложение @OscarAkaElvis в его комментарии является точным.
Ƭᴇcʜιᴇ007

Ответы:


1

Ваша путаница в том, что nameserver записи в /etc/resolv.conf Предполагается, что они эквивалентны (т. е. являются зеркалами и будут давать одинаковые ответы независимо от того, какой из них задан). Если один сервер имен отвечает «это не существует», код разрешения готов, он не пытается другие серверы имен искать другой ответ. Код распознавателя находится в libc и очень прост.

Самое простое решение - это запустить локальный сервер имен в Docker ( BIND или же несвязанный пакетов), который обладает умом знать о общедоступном пространстве имен и «альтернативном юниверсе», который является вашим личным пространством имен, обычно настраивается с использованием зон переадресации или «заглушки». Google ваш друг, чтобы настроить это. Тогда есть только один nameserver вход в /etc/resolv.conf это указывает на 127.0.0.1,

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.