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

当我尝试在我的docker容器中克隆存储库时,它只能解析 github.com 存储库,无法解决 my.companys.github.enterprise.net 库。

如果我在我的线路中切换 resolv.conf,那它只能解决 my.companys.github.enterprise.net 而不是 github.com 那些。

有没有办法允许Docker使用2个不同的名称服务器来解析两个到存储库的链接 resolv.conf 而不只是尝试第一个?


1
也许你可以在你公司的DNS中设置一个货运代理(互联网DNS作为转发器,我的意思)并将其设置在第一位,你可以解决所有问题。如果不可能修改公司的DNS服务器......不知道如何解决。
OscarAkaElvis

如果第一个名称服务器全部回答(即使“我不知道该名称/地址”),则不会检查下一个名称服务器。 @OscarAkaElvis在他的评论中的建议是正确的。
Ƭᴇcʜιᴇ007

Answers:


1

你的困惑是这样的 nameserver 条目 /etc/resolv.conf 被认为是等价的(即镜子,无论问哪一个,都会提供相同的答案)。如果一个名称服务器响应“不存在”,则解析代码完成,它不会尝试其他名称服务器寻找不同的答案。解析器代码在libc中,非常简单。

解决此问题的最简单方法是在Docker中运行本地名称服务器( BIND 要么 未绑定 软件包具有智能知识公共名称空间和“备用Universe”,即您的私有名称空间,通常使用转发或“存根”区域进行配置。谷歌是你设置它的朋友。然后只有一个 nameserver 进入 /etc/resolv.conf 这指向 127.0.0.1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.