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

时间:2015-08-13 14:16:01

标签: docker docker-machine docker-toolbox

我刚刚跟踪Docker-Toolbox

时安装了webpage

我从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$ 

怎么了?

19 个答案:

答案 0 :(得分:479)

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

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

这似乎是由于Docker虚拟机陷入了一种奇怪的状态。有一个开放的github issue here

答案 1 :(得分:40)

我在Windows 10上安装了没有Toolbox的Docker,因此需要启用Hyper-V的版本。

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

一旦改变了设置,它终于奏效了。

答案 2 :(得分:15)

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

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

并重新启动docker服务

服务泊坞重启

答案 3 :(得分: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

有关详细信息,请参阅此(日期)issue,其中提供了此处给出的答案。

答案 4 :(得分:7)

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

答案 5 :(得分:4)

sudo service docker stop
sudo service docker start

对我有用..

不知何故,sudo service docker restart无效

(RHEL7)

答案 6 :(得分:3)

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

  1. 登录默认计算机

    has_many :tags, ->{ select(:name) }, through: :language_tags
    
  2. 更新个人资料以更新代理设置

    $ docker-machine ssh default
    
  3. 根据需要从下方附加

    docker@default:~$ sudo vi /var/lib/boot2docker/profile
    
  4. 退出

    # 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.*"
    
  5. 重启docker machine

    docker@default:~$ exit
    
  6. 更新环境设置

    docker-machine restart default
    
  7. 上述步骤略有调整,但在故障排除指南中提供:https://docs.docker.com/toolbox/faqs/troubleshoot/#/update-varlibboot2dockerprofile-on-the-docker-machine

答案 7 :(得分:2)

昨天我遇到了同样的问题而且没有一个受欢迎的"答案(比如将DNS修改为8.8.8.8)对我有用。我最终发生了这个链接,这就是诀窍... https://github.com/docker/for-win/issues/16

在Docker for Windows,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"

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

答案 8 :(得分: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$

答案 9 :(得分:1)

在Windows 10上。只需右键单击系统托盘终结器图标 - >设置... - >休息 - > Restrart Docker

答案 10 :(得分: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/"

希望有所帮助

答案 11 :(得分:0)

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

答案 12 :(得分: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

最终它对我有用:)

答案 13 :(得分:0)

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

令人震惊的是,当我进入正在运行的容器并且curl https://index.docker.io/v1/repositories/library/hello-world/images时,我得到了完全有效的回复。

我在64位Windows 10 Pro上使用了Docker Toolbox和VirtualBox。

我的解决方案是卸载旧的Docker版本和install the new one that uses Hyper-V而不是VirtualBox。

现在Docker再次工作。

答案 14 :(得分: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下载图像,然后向您展示如何解压缩和“停靠加载”它。

我在8.8.8.8尝试了上面的静态DNS方法并且禁用了ipv6(我不理解代理的事情)并且它们都没有为我工作。

编辑2016年9月8日:

我最初使用dropbear而不是openssh。用openssh重新安装Alpine解决了这个问题。

下一个问题是'PullLayer退出状态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#与systemd包相关/ CAP_SETFCAP

在阿尔卑斯山的情况下,虽然它是

  

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

重新启动

答案 15 :(得分:0)

如果您落后于代理,仅设置HTTP_PROXYHTTPS_PROXY env是不够的。你应该在机器创建时设置它。

Paramer for this is --engine-env

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

答案 16 :(得分:0)

我今天刚刚用1.10.1遇到了这个问题,但现有解决方案都没有奏效。我试图重新启动,升级,重新生成证书,......

我注意到我在机器上创建了很多网络。删除它们后:

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

DNS再次开始运作。

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

答案 17 :(得分:0)

我在boot2docker中遇到了同样的问题,并通过以下方式重新启动它来修复它:

boot2docker restart

答案 18 :(得分:-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