Docker拉取错误

20

我在使用Docker时遇到了问题。当我运行docker pull命令时,出现致命错误。

运行: docker pull golang

结果: Pulling repository golang FATA[0000] Get https://index.docker.io/v1/repositories/library/golang/images: dial tcp: lookup index.docker.io on [192.168.3.50]:53: server misbehaving

尽管我尝试拉取不同的镜像,但仍出现此问题。

如何解决这个问题?
我的Docker版本是1.4.1


1
GET 结果中的 IP 看起来像是本地 IP。你确定没有代理或 DNS 策略阻止你访问这个地址吗? - Laurent Jalbert Simard
是的,问题出在DNS上...我在**/etc/resolv.conf**中添加了一行nameserver 8.8.8.8,这解决了我的问题。谢谢。 - jjaros
"[192.168.3.50]:53: server misbehaving" 是一条 DNS 响应记录。 - Michael
5个回答

37

我在执行 docker build . 时遇到了这个问题,并收到以下错误信息:

Error while pulling image: 
Get https://index.docker.io/v1/repositories/library/debian/images: 
dial tcp: lookup index.docker.io on 75.75.76.76:53: server misbehaving

以及

Error while pulling image: 
Get https://index.docker.io/v1/repositories/library/debian/images: 
dial tcp: lookup index.docker.io: no such host

重新启动 Docker 使用的虚拟机解决了我的问题:

docker-machine restart default && eval "$(docker-machine env default)"

对我来说起作用了,但只有在执行 regenerate-certs 之后才行。我猜测这是因为我在启动 docker-machine 时所处的网络不同。 - David Moles
1
遇到了同样的问题。我在一个网络上启动了Docker虚拟机,然后在另一个网络上尝试进行Docker拉取。重新启动解决了这个问题。 - Sunil
谢谢!问题已解决。 - kashesandr
2
同样的问题,但我使用的是Docker For Mac Beta,因此不能重新生成证书或重新映射docker-machine。 :( - Andrew K
这也解决了我的问题,该问题在这里有记录:https://github.com/apocas/dockerode/issues/247 - Dinis Cruz

12
你的 DNS 服务器无法查找 docker 注册域名 (index.docker.io)。请检查本地 DNS 服务器中的 DNS 记录,或将其替换为公共服务器,例如 8.8.8.8

1
如果在代理后面,需要设置HTTP_PROXY和HTTPS_PROXY。 - BMW
如果您在使用VPN,请尝试禁用VPN。 - Amir Sasson

2
是的,我解决了我的问题!! “我在 /etc/resolv.conf 中添加了一行nameserver 8.8.8.8。” 我刚刚注释了这行nameserver fe80::1%wlo1

1

我曾在OSX上使用Docker稳定版本v1.13.0时遇到过类似的问题。这个问题不定期出现,在办公室的多台OSX笔记本电脑上都会出现。当问题出现时,会出现以下错误信息:

error pulling image configuration: 
Get https://prod-ap-southeast-2-starport-layer-bucket.s3-REGION.amazonaws.com/XXX: 
dial tcp: lookup prod-REGION-starport-layer-bucket.s3-ap-southeast-2.amazonaws.com on 192.168.xxx.xxx:53: 
no such host

我们已经能够通过运行以下命令可靠地修复它:

docker run --rm -v /etc/resolv.conf:/rtemp debian:8 bash -c 'echo "nameserver 8.8.8.8" > /rtemp'

请注意,每次启动docker客户端时都需要运行此命令。该命令正在更改docker引擎DNS设置,以停止通过docker客户端代理(因此使用您的主机DNS设置)并改为通过Google DNS服务器8.8.8.8解析DNS查询。
我认为根本原因是amazon URL的DNS响应负载大小发生了变化,当它大于512字节时,Docker客户端DNS代理无法处理响应。
我认为这个根本原因在这个开放的docker问题中讨论,但不能确定: https://github.com/docker/docker/issues/18842

0

请尝试以下命令

    $ docker-machine ssh
    $ sudo su
    $ echo "nameserver 8.8.8.8" > /etc/resolv.conf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接