Dockerは複数のネームサーバーを必要とするホストを解決できません


1

私はいくつかのgitリポジトリを複製し、それ自身の内部でプロジェクトを構築するDockerコンテナを実行しています。

それは2つの異なるリポジトリからコードを複製します。 github.com もう一方はプライベートです my.companys.github.enterprise.net VPN経由でのみアクセス可能です。

私の中で resolv.conf 私は2つのネームサーバーを持っています。1つはパブリックサービス用、もう1つはVPN用です。

nameserver 8.8.8.8
nameserver 10.10.3.3

私のdockerコンテナ内でリポジトリをクローンしようとすると解決できるだけです github.com リポジトリで解決できない my.companys.github.enterprise.net リポジトリ

私は私の中の行を切り替えると resolv.confそれからそれは解決することができるだけです my.companys.github.enterprise.net ではなく github.com もの

Dockerが2つの異なるネームサーバーを使用してリポジトリへの両方のリンクを解決できるようにする方法はありますか resolv.conf 最初の1つを試すだけでなく、


1
たぶんあなたはあなたの会社のDNSにフォワーダ(私が意味するフォワーダとしてのインターネットDNS)を設定することができ、あなたがすべてを解決できる最初の場所にそれを設定することができます。会社のDNSサーバーを変更することができない場合...解決方法がわからない。
OscarAkaElvis

最初のネームサーバーが(「その名前/アドレスがわかりません」と言っても)AT ALLと答えると、次のネームサーバーはチェックされません。彼のコメントにおける@OscarAkaElvisの提案はその場です。
Ƭᴇcʜιᴇ007

回答:


1

あなたの混乱はそれです nameserver のエントリ /etc/resolv.conf は同等であると仮定されている(すなわち、どちらが尋ねられても同じ答えを提供する)。あるネームサーバが「存在しない」と応答した場合、解決コードは処理され、他のネームサーバが別の回答を探すことはありません。リゾルバのコードはlibcにあり、非常に単純です。

これを修正する最も簡単な解決策はDockerでローカルネームサーバーを実行することです( バインド または 未結合 これは、パブリックネームスペースとプライベートネームスペースである「代替ユニバース」(通常は転送ゾーンまたは「スタブ」ゾーンを使用して構成されている)について知っておく必要があります。 Googleはそれを設定するためのあなたの友人です。それから一つだけ nameserver に入る /etc/resolv.conf それを指す 127.0.0.1

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.