Я использую контейнер 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
вместо того, чтобы просто попробовать первый?
источник
Ответы:
Ваша путаница в том, что
nameserver
записи в/etc/resolv.conf
Предполагается, что они эквивалентны (т. е. являются зеркалами и будут давать одинаковые ответы независимо от того, какой из них задан). Если один сервер имен отвечает «это не существует», код разрешения готов, он не пытается другие серверы имен искать другой ответ. Код распознавателя находится в libc и очень прост.Самое простое решение - это запустить локальный сервер имен в Docker ( BIND или же несвязанный пакетов), который обладает умом знать о общедоступном пространстве имен и «альтернативном юниверсе», который является вашим личным пространством имен, обычно настраивается с использованием зон переадресации или «заглушки». Google ваш друг, чтобы настроить это. Тогда есть только один
nameserver
вход в/etc/resolv.conf
это указывает на127.0.0.1
,источник