加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Docker pull无法在127.0.1.1:53上查找index.docker.io(无法解组D

发布时间:2020-12-16 03:49:41 所属栏目:安全 来源:网络整理
导读:出于某种原因,我无法让Docker与Dockerhub通信;某些DNS相关原因导致搜索和拉取命令失败.例如: $docker pull redisPulling repository redisGet https://index.docker.io/v1/repositories/library/redis/images: dial tcp: lookup index.docker.io on 127.0.1

出于某种原因,我无法让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.这将允许数据包正确路由出去.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读