Docker pull无法在127.0.1.1:53上查找index.docker.io(无法解组DNS消息)

前端之家收集整理的这篇文章主要介绍了Docker pull无法在127.0.1.1:53上查找index.docker.io(无法解组DNS消息)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

出于某种原因,我无法让Docker与Dockerhub通信;某些DNS相关原因导致搜索和拉取命令失败.例如:

$docker pull redis
Pulling repository redis
Get https://index.docker.io/v1/repositories/library/redis/images: dial tcp: lookup index.docker.io on 127.0.1.1:53: cannot unmarshal DNS message

我的网络连接很好.我可以ping 127.0.1.1.这是一个本地主机地址吗?是否有某种Dockerhub特定的DNS服务在我的机器上运行?我的网络似乎没有其他任何问题.

我已经尝试配置我的网络连接以使用谷歌的DNS(8.8.8.8),但这没有任何区别.

更新

奇怪的是,我无法ping index.docker.io,但如果我尝试在浏览器中导航,我会被重定向到hub.docker.com.

更新

我现在可以确认这只发生在酒店的一个局域网上.我不知道他们在做什么,或者为什么它只影响Docker,而不是Git或Bittorrent或任何其他连接工具.

最佳答案
问题有点陈旧,但由于它仍然没有答案,我碰巧偶然发现它,它就在那里.

您入住的酒店的本地网络可能使其网络寻址与Docker创建的虚拟网络发生冲突.我在公司网络中发布了同样的类型.

最简单(但没有很好记录)的修复是强制Docker使用’–bip’参数为虚拟局域网使用任意网络地址.在Linux中,通常可以通过在/ etc下编辑Docker配置来轻松实现,但在Mac上(以防万一有人偶然发现),特别难以找到要更改的文件.如果是这种情况,请在https://github.com/docker/docker/issues/25064阅读一下.

基本上,您需要找到您所连接的网络上未使用的网段. Docker默认会尝试这样做:它将使用第一个不与任何网络接口冲突的私有CIDR.但是,如果您正在通过另一个私有网段路由的私有LAN网段上,Docker无法看到这一点,并最终可能会创建一个带有冲突CIDR的本地网络,从而阻止数据包路由出来.

一个例子,澄清:

您的IP地址可能是192.168.10.2,网络掩码为/ 24.此网络可能在192.168.10.1/24上有默认网关,但该网关会引导您通过另一台地址为172.17.1.1的路由器.

Docker会注意到192.168.10.0/24正在使用并创建一个地址为172.16.0.0/16的虚拟网络 – 因此您的容器将尝试在本地CIDR下路由所有地址,并且永远不会到达172.17.1.1外部路由器.在这种情况下,您希望将–bip更改为不同的内容,例如10.0.0.1/16.这将允许数据包正确路由出去.

原文链接:https://www.f2er.com/docker/435733.html

猜你在找的Docker相关文章