【问题标题】:Network timed out while trying to connect to https://index.docker.io尝试连接到 https://index.docker.io 时网络超时
【发布时间】:2015-11-06 13:41:09
【问题描述】:

我刚刚安装了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$ 

怎么了?

【问题讨论】:

    标签: docker docker-machine docker-toolbox


    【解决方案1】:

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

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

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

    【讨论】:

    • 这也为我修复了它......但是,我必须在每个新的终端会话中重新运行它。
    • 似乎在我从工作 LAN 切换到家庭 LAN 时发生。也许从家里无法访问 DNS。
    • 我可以确认它在我更改 WiFi 网络时中断。重新启动 Docker 总是会修复它。
    • 完美,就我而言,我必须包含docker-machine regenerate-certs default
    • 天哪,现在一切都说得通了。切换网络设置(wifi、到 lan、到 vpn、家庭网络、工作 Intranet、iphone,...)会导致这些奇怪的问题。
    【解决方案2】:

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

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

    一旦更改了该设置,它终于起作用了。

    【讨论】:

    • 我刚切换到固定,然后切换回来并点击应用。无需将其固定。
    • 在我的情况下,我安装了 OpenDNS 伞式客户端,它将您的网络设置设置为使用 127.0.0.1 作为 DNS。 Docker 似乎从您的网卡中复制了设置,因此将 localhost 放入它自己的 DNS 设置中,这自然是行不通的。
    • 在 Windows 10 上工作
    【解决方案3】:

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

    导出 http_proxy="http://HOST:PORT/"

    并重启docker服务

    服务泊坞窗重启

    【讨论】:

    • 本来是一个“示例”代理服务器,没想到会引起混乱
    • 对于centos,它在/etc/sysconfig/docker文件中。
    • 对于 MacOS,我在 Docker Desktop 的“Preferences”->“Proxies”中手动输入了代理配置
    【解决方案4】:

    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,它提供了此处给出的答案。

    【讨论】:

      【解决方案5】:

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

      【讨论】:

      • 这对我有用(Windows 10 Pro 上的 VirtualBox 5.0.10r104061)。请注意比我新的新手,您必须docker-machine stop default,然后在VirtualBox 管理器中添加网络,然后docker-machine start default(根据需要将默认更改为您的机器名称)。我首先尝试了@Mark-Smith 的简单重启+eval env 建议,但这并没有为我做。
      • @dbaOnTap 你真是天赐良机,我的朋友。我已经坚持了好几天了。使用 VirtualBox 最新测试版本 (5.0.15-10594) 和最新的 docker 工具箱 (1.10.0) 运行 Windows 10 Home,这是唯一对我有用的东西。
      【解决方案6】:
      sudo service docker stop
      sudo service docker start
      

      适用于我.. P>

      不知何故,sudo service docker restart没有工作 P>

      (RHEL7) P>

      【讨论】:

        【解决方案7】:

        在 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 ... `,因为无需身份验证即可直接访问网络。
        【解决方案8】:

        我昨天遇到了同样的问题,但没有一个“流行”的答案(比如将 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"
        

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

        【讨论】:

          【解决方案9】:

          我假设您遇到了网络问题。你在代理后面吗?它是否有可能过滤到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,现在它似乎可以工作了
          • 我删除了我使用 force 选项创建的现有机器并重新创建了它 - 可以。 docker-machine rm -f <machine_name>
          【解决方案10】:

          在 Windows 10 上。只需右键单击系统托盘 docker 图标 -> 设置... -> 休息 -> 重新启动 Docker

          【讨论】:

            【解决方案11】:

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

            boot2docker restart
            

            【讨论】:

            • boot2docker 已弃用
            【解决方案12】:

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

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

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

            DNS 再次开始工作。

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

            【讨论】:

              【解决方案13】:

              如果你在代理后面,设置 HTTP_PROXYHTTPS_PROXY 环境是不够的。您应该在创建机器时设置它。

              这个参数是--engine-env:

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

              【讨论】:

                【解决方案14】:

                就我而言,在 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 load' 它。

                我在 8.8.8.8 尝试了上述静态 DNS 的方法并禁用了 ipv6(我不明白代理的事情),但它们都不适合我。

                编辑 2016 年 9 月 8 日:

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

                下一个问题是'ApplyLayer exit status 1 stdout: stderr: chmod /bin/mount: permission denied' 在 pull 期间出现错误。

                来自 (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

                重启

                【讨论】:

                • 我意识到这里并非如此,但对于未来:禁用 IPv6 绝不是一个正确的答案。如果禁用 IPv6 曾经“修复”一个问题,那么真正的问题在别处。
                【解决方案15】:

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

                令人惊讶的是,当我 ssh 进入正在运行的容器并执行 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 又可以工作了。

                【讨论】:

                  【解决方案16】:

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

                  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 下载更新的图像:最新

                  它终于对我有用了:)

                  【讨论】:

                    【解决方案17】:

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

                    【讨论】:

                      【解决方案18】:

                      为 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/"
                      

                      希望对你有帮助

                      【讨论】:

                        【解决方案19】:

                        参考https://docs.docker.com/network/proxy/ 对我来说,没有 http:// 或 https:// 前缀的代理设置有效。 例如: 代理:端口

                        或带有 / 后缀,带有 http:// 或 https:// 前缀 即: http://PROXY:PORT/

                        【讨论】:

                          【解决方案20】:

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

                          要解决它,运行:

                          1. docker-machine stop
                          2. docker-machine start
                          3. docker-env
                          4. "C:\Program Files\Docker Toolbox\docker-machine.exe" env | Invoke-Expression

                          【讨论】:

                            猜你喜欢
                            • 2013-05-09
                            • 2014-10-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            相关资源
                            最近更新 更多