如何修复Docker的“错误拉图像…太多redirect”失败,同时从registry中提取图像?

我在OS X 10.10上通过CoreOS和Vagrant运行Docker。

当我在CoreOS中运行docker pull ubuntu时,出现以下错误:

 $ docker pull ubuntu Pulling repository ubuntu cc0067db4f11: Error pulling image (precise) from ubuntu, endpoint: https://cdn-registry-1.docker.io/v1/, Get https://cdn-registry-1.docker.io/v1/images/cc0067db4f11198ef6fd0435f96a973e559b1cebfceb2bc8e4fe527b32045c2f/ancestry: dial tcp: lookup cdn-registry-1.dcc0067db4f11: Error pulling image (precise) from ubuntu, Get https://cdn-registry-1.docker.io/v1/images/cc0067db4f11198ef6fd0435f96a973e559b1cebfceb2bc8e4fe527b32045c2f/ancestry: dial tcp: lookup cdn-registry-1.docker.io on [10.0.2.3]:53: too many redirects 6006e6343fad: Error pulling image (quantal) from ubuntu, endpoint: https://cdn-registry-1.docker.io/v1/, Get https://cdn-registry-1.docker.io/v1/images/6006e6343fadaaeb5dd98436a3cd17eac8c03cabca1ed4c8778d039e72ebcc9c/ancestry: dial tcp: lookup cdn-registry-1.d6006e6343fad: Error pulling image (quantal) from ubuntu, Get https://cdn-registry-1.docker.io/v1/images/6006e6343fadaaeb5dd98436a3cd17eac8c03cabca1ed4c8778d039e72ebcc9c/ancestry: dial tcp: lookup cdn-registry-1.docker.io on [10.0.2.3]:53: too many redirects 7656cbf56a8c: Error pulling image (13.04) from ubuntu, endpoint: https://cdn-registry-1.docker.io/v1/, Get https://cdn-registry-1.docker.io/v1/images/7656cbf56a8c831de71ef43809b04fcf8125e7b039250835b6c5f6f280daf12e/ancestry: dial tcp: lookup cdn-registry-1.doc7656cbf56a8c: Error pulling image (13.04) from ubuntu, Get https://cdn-registry-1.docker.io/v1/images/7656cbf56a8c831de71ef43809b04fcf8125e7b039250835b6c5f6f280daf12e/ancestry: dial tcp: lookup cdn-registry-1.docker.io on [10.0.2.3]:53: too many redirects 3db9c44f4520: Error pulling image (lucid) from ubuntu, endpoint: https://cdn-registry-1.docker.io/v1/, Get https://cdn-registry-1.docker.io/v1/images/3db9c44f45209632d6050b35958829c3a2aa256d81b9a7be45b362ff85c54710/ancestry: dial tcp: lookup cdn-registry-1.doc3db9c44f4520: Error pulling image (lucid) from ubuntu, Get https://cdn-registry-1.docker.io/v1/images/3db9c44f45209632d6050b35958829c3a2aa256d81b9a7be45b362ff85c54710/ancestry: dial tcp: lookup cdn-registry-1.docker.io on [10.0.2.3]:53: too many redirects 5cf8fd909c6c: Error pulling image (trusty) from ubuntu, endpoint: https://cdn-registry-1.docker.io/v1/, Get https://cdn-registry-1.docker.io/v1/images/5cf8fd909c6ccc61199df6dbeb165767b83c23842ef49ca3ef3b81ece1bdce4f/ancestry: dial tcp: lookup cdn-registry-1.do5cf8fd909c6c: Error pulling image (trusty) from ubuntu, Get https://cdn-registry-1.docker.io/v1/images/5cf8fd909c6ccc61199df6dbeb165767b83c23842ef49ca3ef3b81ece1bdce4f/ancestry: dial tcp: lookup cdn-registry-1.docker.io on [10.0.2.3]:53: too many redirects d2099a5ba6c5: Error pulling image (saucy) from ubuntu, endpoint: https://cdn-registry-1.docker.io/v1/, Get https://cdn-registry-1.docker.io/v1/images/d2099a5ba6c5a0f94f84162d69b4cb79b47c7ea1768550c6cee55a7ba2dc3647/ancestry: dial tcp: lookup cdn-registry-1.docd2099a5ba6c5: Error pulling image (saucy) from ubuntu, Get https://cdn-registry-1.docker.io/v1/images/d2099a5ba6c5a0f94f84162d69b4cb79b47c7ea1768550c6cee55a7ba2dc3647/ancestry: dial tcp: lookup cdn-registry-1.docker.io on [10.0.2.3]:53: too many redirects 2014/06/05 12:17:11 Could not find repository on any of the indexed registries. 

我真的很感激,如果有人可以给我一个有用的build议,如何解决这个问题。

试试这个临时的解决方法:

 osx$ boot2docker up osx$ boot2docker ssh docker@boot2docker$ sudo echo "nameserver 8.8.8.8" > /etc/resolv.conf docker@boot2docker$ sudo /etc/init.d/docker restart 

它工作,直到重新启动

我不知道OS X,但在Linux上,这可能是由于主机上的“坏”/etc/resolv.conf。 例如,Ubuntu的提出像这样的:

 nameserver 127.0.1.1 

然后通过一些服务处理DNS请求。 问题是,这是从图像内部访问。

为了解决这个问题,我不得不添加一些外部名称服务器,如:

 nameserver 127.0.1.1 nameserver 8.8.8.8 nameserver 8.8.4.4 

使用此命令尝试从Docker存储库中提取容器时,遇到了类似的问题:
docker pull ubuntu

请注意,我在virtualbox内部使用了coreos,并且使用Nat作为我的networkingconfiguration来访问互联网。 使用virtualbox切换networking模式时,我无法做任何拉动。

我解决了这个问题,通过引入这个命令重新启动docker与systemctl
sudo systemctl restart docker

然后我的拉工作正常。 我希望这个解决scheme帮助你。 我通过以下链接从CoreOS创build者之一( Brandon Philips )的谷歌组合问题中获得: https ://groups.google.com/forum/#! topic/ coreos-dev/vWqSbPgNYro

10.0.2.3是virtualbox dns服务器,请检查微调VirtualBox NAT引擎

您可以像其他build议使用8.8.8.8这是谷歌DNS服务器。

 # /etc/resolve.conf nameserver 8.8.8.8 

如果你在Intranet上工作,那么用普通的dns服务器replace它,你可以像下面那样添加search

 # /etc/resolve.conf nameserver xxx.xxxx.xxx search company.com 

这将是很好的访问您的私人回购

在MacOSX上,如果您使用Docker机器,您可以尝试:

  docker-machine ls docker-machine ssh YOUR_VM_NAME 

然后在VM中:杀死/ usr / local / bin / docker进程并手动启动它:

  sudo /usr/local/bin/docker -d -D -g /var/lib/docker -H unix:// -H tcp://0.0.0.0:2376 --label provider=virtualbox --tlsverify --tlscacert=/var/lib/boot2docker/ca.pem --tlscert=/var/lib/boot2docker/server.pem --tlskey=/var/lib/boot2docker/server-key.pem -s aufs 

有趣的是,像这样重新启动

 sudo /etc/init.d/docker restart 

没有帮助。

在Windows上,我可以通过执行以下操作来修复它:

  1. 转到虚拟框应用程序
  2. 删除创build的虚拟机
  3. 重新启动计算机(可选,我认为)
  4. 开始Kitematic
  5. 回到Virtual Box,点击显示
  6. 确保ping google.com命令有效

现在我可以从集线器下载泊坞窗图像。