突然间,我的docker开始报类似这样的错误

dial tcp: lookup production.cloudflare.docker.com on 114.114.114.114:53: read udp 192.168.1.117:25690->114.114.114.114:53: 
i/o timeout

真的是莫名其妙啊!各大站点逛遍也没有找到一个明确的解释!很寒心啊!

在这里,我明确地提出解决办法,按照我说的做,你就能解决!

首先,出问题的是我在公司的电脑,一台ubuntu 16.04 .

1.首先,这条log里包含一个信息。我的是114.114.114.114 也有人的是8.8.8.8 ,这是什么呢?是dns服务器,最开始的时候,我的dns是本地路由器,后来换成了114.114.114.114。所以,你要做的第一件事情就是,如果没有设置过dns的,先换一个dns。

2.第二步,docker仓库换到国内镜像,可以是DaoCloud的加速器,也可以是网易的,或者阿里的。设置完了service docker restart。

3.第三步,这时候其实做好了准备工作,接下来,继续执行之前报错的docker 命令,一般pull镜像就OK了,比如,docker pull python,每一次报错,都记录下log信息,比如第一次

dial tcp: lookup index.docker.io on 114.114.114.114:53: read udp 192.168.1.117:25690->114.114.114.114:53: i/o timeout

发现没,这其实是通过代理方式请求dns服务器,获取index.docker.io的ip超时了。原因可能是随机的本机(192.168.1.117)某端口无法正常访问。所以,为了避免向dns服务器请求,直接手动ping index.docker.io 的方式获取ip,然后写到hosts里面。

#其实所有会出现的log,是这样的
dial tcp: lookup [des-domin] on [dns-ip]:53: read udp [local-ip]:25690->[dns-ip]:53: i/o timeout

要做的,也很简单

ping [des-domin]

拿到ip,然后把这一条映射存到/etc/hosts里。

然后重复pull,ping,hosts。我只添加了两条dns映射就解决了。相信你也不会很多。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐