尝试连接到https://index.docker.io时网络超时


204

我刚刚在跟随他们的网页时安装了Docker-Toolbox

我开始Docker QuickStart Terminal看下面

                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/


docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com

bash-3.2$ 

但是当我尝试表演时docker pull hello-world,这就是我所看到的

bash-3.2$ docker run hello-world
Unable to find image 'hello-world:latest' locally
Pulling repository docker.io/library/hello-world
Network timed out while trying to connect to https://index.docker.io/v1/repositories/library/hello-world/images. You may want to check your internet connection or if you are behind a proxy.
bash-3.2$ 

怎么了?

Answers:


482

今天早上我遇到了同样的问题,以下内容为我解决了这个问题:

$ docker-machine restart default      # Restart the environment
$ eval $(docker-machine env default)  # Refresh your environment settings

看来这是由于Docker虚拟机进入了一种奇怪的状态。这里有一个开放的github问题


3
这也为我修复了它。但是,我必须在每个新的终端会话中重新运行它。
THX1137 2015年

17
从工作LAN切换到家庭LAN时似乎发生了。也许DNS无法在家中访问。
塔科2015年

10
我可以确认当我更改WiFi网络时它会中断。重新启动Docker总是可以修复它。
史蒂芬·哈里森

3
完美,就我而言,我必须包括docker-machine regenerate-certs default
rogeriopradoj 2015年

3
废话,这已经很有意义了。切换网络设置(WiFi,LAN,VPN,家庭网络,工作Intranet,iphone等)会导致这些奇怪的问题。
nils petersohn

41

我在Windows 10上安装了不带工具箱的Docker,因此需要启用Hyper-V的版本。

对于Docker 1.12版,我必须进入任务栏,右键单击Docker图标,选择设置->网络,然后将DNS服务器设置为固定,以便使用位于Google的DNS服务器8.8.8.8

更改设置后,它终于可以工作了。


我只是切换到固定,然后又切换回固定并点击套用。不需要将其固定。
菲利普·汀尼

就我而言,我安装了OpenDNS伞式客户端,该客户端将您的网络设置设置为对DNS使用127.0.0.1。Docker似乎是从您的网卡复制设置,因此将localhost放入它自己的DNS设置中,这自然是行不通的。
理查德·本森

在Windows 10上工作
大师

16

更简单的解决方案是在/ etc / default / docker文件中添加以下条目

导出http_proxy =“ http:// HOST:PORT /”

并重新启动docker服务

服务docker重新启动


它原本是一个“示例”代理服务器,没想到会引起混乱
pr-pal

2
对于centos,它位于/ etc / sysconfig / docker文件中。
Priyank Desai 2016年

对于MacOS,我手动将代理配置输入Docker桌面的“首选项”->“代理”
user1394

8

2016年8月更新

使用Docker for Mac(1.12.0版)时发现以下形式的问题:

➜  docker pull node
Using default tag: latest
Pulling repository docker.io/library/node
Network timed out while trying to connect to https://index.docker.io/v1/repositories/library/node/images. You may want to check your internet connection or if you are behind a proxy.`enter code here`

通过更新MacBook Pro无线网络设置以包含以下DNS条目来解决此问题: 8.8.8.8

有关更多信息,请参见此(日期)问题,此处提供了给出的答案。


7

我在VBOX 5.10中使用Docker VM在我的MAC(主机)上运行Docker时遇到了这个问题。这是一个网络问题。简单的解决方法是将桥接网络添加到VBOX映像。您可以使用虚拟机附带的NAT配置,但需要将ssh端口从50375更改为2375。


1
这对我有用(Windows 10 Pro上为VirtualBox 5.0.10r104061)。请注意,您必须比我新的新手docker-machine stop default,然后在VirtualBox管理器中添加网络,然后docker-machine start default(根据需要将默认名称更改为计算机的名称)。我首先尝试了@ Mark-Smith的简单的restart + eval env建议,但这对我没有帮助。
大卫·布朗

@dbaOnTap你真是我的朋友。我已经坚持了好几天。使用VirtualBox最新测试版(5.0.15-10594)和最新docker工具箱(1.10.0)运行Windows 10 Home,这是对我唯一有效的方法。
cudacoder '16

4
sudo service docker stop
sudo service docker start

为我工作。

不知何故,sudo service docker restart不起作用

(RHEL7)


4

在Windows 7上,如果您认为自己落后于代理

  1. 登录到默认计算机

    $ docker-machine ssh default
    
  2. 更新配置文件以更新代理设置

    docker@default:~$ sudo vi /var/lib/boot2docker/profile
    
  3. 从下面适当添加

    # replace with your office's proxy environment
    export"HTTP_PROXY=http://PROXY:PORT"
    export"HTTPS_PROXY=http://PROXY:PORT"
    
    # you can add more no_proxy with your environment.
    export"NO_PROXY=192.168.99.*,*.local,169.254/16,*.example.com,192.168.59.*"
    
  4. 出口

    docker@default:~$ exit
    
  5. 重启docker机器

    docker-machine restart default
    
  6. 更新环境设置

    eval $(docker-machine env default)
    

略微调整了上述步骤,但如故障排除指南中所述:https : //docs.docker.com/toolbox/faqs/troubleshoot/#/update-varlibboot2dockerprofile-on-the-docker-machine


就我而言,可以工作,但是我删除了export"HTTP_PROXY=http://PROXY:PORT`... HTTPS_PROXY ...`,因为无需授权即可直接访问网络。
Muka

2

昨天我遇到了这个完全相同的问题,没有一个“受欢迎的”答案(例如将DNS固定为8.8.8.8)对我没有任何作用。我最终碰到了这个链接,并且成功了... https://github.com/docker/for-win/issues/16

在适用于Windows的Docker,Windows 10和Hyper-V之间,在虚拟网络适配器创建过程中似乎存在问题。具体来说,您可能最终会得到两个“ vEthernet(DockerNAT)”网络适配器。使用Get-NetAdapter "vEthernet (DockerNAT)"(在提升的PowerShell控制台中)进行检查。如果结果显示多个适配器,则可以使用以下命令禁用它并重命名它:

$vmNetAdapter = Get-VMNetworkAdapter -ManagementOS -SwitchName DockerNAT
Get-NetAdapter "vEthernet (DockerNAT)" | ? { $_.DeviceID -ne $vmNetAdapter.DeviceID } | Disable-NetAdapter -Confirm:$False -PassThru | Rename-NetAdapter -NewName "OLD"

然后打开“设备管理器”并删除禁用的适配器(由于某些原因,您可以从此处进行此操作,但不能从“网络和共享中心”适配器视图中进行操作)。


1

我认为您有网络问题。您是代理人吗?是否有可能过滤docker.io与Docker用户代理的连接或阻止该连接?

我安装了工具箱并进行了测试。它工作正常,在这里:

docker is configured to use the default machine with IP 192.168.99.101
For help getting started, check out the docs at https://docs.docker.com

bash-3.2$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world

535020c3e8ad: Pull complete 
af340544ed62: Already exists 
library/hello-world:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:d5fbd996e6562438f7ea5389d7da867fe58e04d581810e230df4cc073271ea52
Status: Downloaded newer image for hello-world:latest

Hello from Docker.
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker Hub account:
 https://hub.docker.com

For more examples and ideas, visit:
 https://docs.docker.com/userguide/

bash-3.2$

我重新安装了Docker-Toolbox,现在看来可以正常使用
做白日梦的人2015年

1
我删除了使用force选项创建的现有计算机,然后重新创建-可以正常工作。docker-machine rm -f <machine_name>
user1189332

1

在Windows 10上,只需右键单击系统托盘docker图标->设置...->其余-> Restrart Docker


0

我在boot2docker上也遇到了同样的问题,并通过使用以下命令重新启动了它:

boot2docker restart

boot2docker已弃用
Ultrasaurus

0

今天,我只是碰到了这一点,1.10.1而现有的解决方案都没有。我试图重新启动,升级,重新生成证书,...

我注意到我在计算机上创建了很多网络。用以下方法删除它们之后:

docker network ls | grep bridge | awk '{print $1}' | xargs -n1 docker network rm

DNS重新开始工作。

注意:您可以忽略有关预定义网络的错误


0

如果您落后于代理,则不足以设置HTTP_PROXYHTTPS_PROXY。您应该在计算机创建时进行设置。

为此的参数是--engine-env

docker-machine create -d "virtualbox" --engine-env HTTP_PROXY=http://<PROXY>:<PORT> --engine-env HTTPS_PROXY=<PROXY>:<PORT> dev

0

就我而言,在Alpine Linux上安装docker时出现错误:

尝试连接到https://index.docker.io/v1/repositories/library/ ................ 时网络超时。

在此处使用脚本:https : //github.com/docker/docker/blob/master/contrib/download-frozen-image-v2.sh

作品。它使用curl下载图像,然后向您展示如何解压缩和“ docker加载”它。

我在8.8.8.8上尝试了上述静态DNS方法,并禁用了ipv6(我不了解代理功能),但没有一个对我有用。

编辑9/8/2016:

我最初使用的是dropbear而不是openssh。用openssh重新安装Alpine可以解决此问题。

下一个问题是提取期间出现“ ApplyLayer退出状态1 stdout:stderr:chmod / bin / mount:权限被拒绝”错误。

从(nixaid.com/grsec-in-docker/):

要构建Docker映像,我必须禁用以下grsec保护。修改/etc/sysctl.d/grsec.conf,如下所示:

kernel.grsecurity.chroot_deny_chmod = 0 kernel.grsecurity.chroot_deny_mknod = 0 kernel.grsecurity.chroot_caps = 0#与系统化软件包/ CAP_SETFCAP相关

在高山的情况下

/etc/sysctl.d/00-alpine.conf

重启


我知道这里不是这种情况,但是对于将来:禁用IPv6永远不是正确的答案。如果禁用IPv6曾经“解决”了一个问题,那么真正的问题就出在其他地方。
斯蒂芬

0

重新启动Docker或重新创建映像无济于事。我重新启动Windows无济于事。

令人惊讶的是,当我把它塞进正在运行的容器中并做了 curl https://index.docker.io/v1/repositories/library/hello-world/images我得到了一个完全有效的响应。

我使用了Docker Toolbox在64位Windows 10 Pro上将与VirtualBox一起使用。

在我的情况下,解决方案是卸载旧的Docker版本并安装使用Hyper-V的新版本。而不是VirtualBox。

现在,Docker又可以工作了。


0

如果您落后于代理,请使用以下命令

sudo mkdir /etc/systemd/system/docker.service.d

sudo cd /etc/systemd/system/docker.service.d

sudo vi http-proxy.conf
[Service]

Environment=HTTP_PROXY=http://proxy-server-ip:port" "NO_PROXY=localhost,127.0.0.1"

sudo systemctl daemon-reload 

sudo systemctl show --property=Environment docker

sudo systemctl restart docker

如果可以获取最新的Ubuntu,请尝试此操作

sudo docker run -it ubuntu bash

无法在ubuntu:latest本地找到图片

最新:从库/ ubuntu中提取b3e1c725a85f:提取完成

4daad8bdde31:提取完成

63fe8c0068a8:拉出完成

4a70713c436f:拉动完成

bd842a2105a8:拉出完成

消化:

sha256:7a64bc9c8843b0a8c8b8a7e4715b7615e4e1b0d8ca3c7e7a76ec8250899c397a

状态:为ubuntu:latest下载了较新的图像

终于对我有用了:)


0

另一种情况:如果您的docker网络适配器被禁用,它将失败并显示此错误。该适配器名为“ vEthernet(DockerNAT)”或类似名称。显然,此适配器以某种方式参与了正常的docker pull行为。重新启用以解决问题。


0

为docker服务创建一个systemd插入目录:

$ sudo mkdir -p /etc/systemd/system/docker.service.d

创建一个名为/etc/systemd/system/docker.service.d/http-proxy.conf添加HTTP_PROXY环境变量的文件:

[服务]

Environment="HTTP_PROXY=http://proxy.example.com:80/"

希望能帮助到你


-1

在Windows上,当我从工作网络转移到家庭网络时,发生了这种情况。

要解决它,请运行:

  1. docker-machine stop
  2. docker-machine start
  3. docker-env
  4. "C:\Program Files\Docker Toolbox\docker-machine.exe" env | Invoke-Expression
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.