gpt4 book ai didi

docker - 所有外部 DNS 查询都在 docker 容器内失败

转载 作者:IT老高 更新时间:2023-10-28 21:40:39 32 4
gpt4 key购买 nike

当前 docker 版本:1.13.1, build 092cba3

/etc/resolv.conf 的内容:

search mycompany.local
nameserver 127.0.0.11
options ndots:0

(混淆了真实的公司名称)。

主机本身的

nslookup 100% 没问题,但从容器内任何外部主机名查找都会失败(无法事件运行 apt-get update)。我在 4 节点集群中的所有主机中都存在相同的症状。请注意,内部服务名称解析似乎在容器之间起作用。

直接在我的笔记本电脑上运行相同的应用程序(在同一个办公网络上)主机名解析很好。

这正在成为一场缓慢的灾难。

所涉及的集群仍然是 1.12 之前的版本,它可能有任何影响。

最佳答案

在 Linux 中,lo 或 localhost 接口(interface)的地址为 127.0.0.1/8(即网络掩码 255.0.0.0)。该网络掩码涵盖了整个范围:

127.0.0.0 - 127.255.255.255

由于 127.0.0.11 属于此范围,到该地址的连接将尝试通过 lo 接口(interface)(在容器内)作为连接路由进行路由。除非您的容器在内部配置了该地址并且有一个 DNS 解析器监听该地址,否则这将导致连接超时。

您可以通过将 127.0.0.11 路由到容器的主界面(例如 eth0)或更改 DNS 解析器地址使其位于 127.0.0.0/8 之外来解决此问题.

您还可以明确设置 DNS 服务器 IP。

docker run --dns 1.2.3.4                  # set one server
docker run --dns 1.2.3.4 --dns 5.6.7.8 # set multiple servers

或者使用 docker-compose.yml:

dns: 1.2.3.4

dns:
- 1.2.3.4
- 5.6.7.8

关于docker - 所有外部 DNS 查询都在 docker 容器内失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42224199/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com