Network timed out while trying to connect to https://index.docker.io

落花浮王杯 提交于 2019-12-02 13:48:28
Mark Smith

I had the same problem this morning and the following fixed it for me:

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

It appears that this is due to the Docker virtual machine getting itself into a strange state. There is an open github issue here

I installed Docker without the Toolbox on Windows 10, so the version that requires Hyper-V to be enabled.

For Docker version 1.12 I had to go into the taskbar, right click the Docker Icon, select Settings -> Network and set the DNS Server to fixed, so that is uses Google's DNS server at 8.8.8.8.

Once that setting was changed, it finally worked.

The simpler solution is to add the following entry in /etc/default/docker file

export http_proxy="http://HOST:PORT/"

and restart the docker service

service docker restart

Update August 2016

Using Docker for Mac (version 1.12.0), was seeing issues of the form:

➜  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`

This was resolved by updating my MacBook Pro wireless network settings to include the following DNS entry: 8.8.8.8

For further info, please see this (dated) issue which provided the answer given here.

I ran into this problem running Docker on my MAC(host) with Docker VM in VBOX 5.10. It is a networking issue. The simple fix is to add a bridged network to the VBOX image. You can use the included NAT config present with the VM, but you need to change the ssh port from 50375 to 2375.

sudo service docker stop
sudo service docker start

works for me..

somehow, sudo service docker restart didn't work

(RHEL7)

On Windows 7 and if you believe you are behind proxy

  1. Logon to default machine

    $ docker-machine ssh default
    
  2. Update profile to update proxy settings

    docker@default:~$ sudo vi /var/lib/boot2docker/profile
    
  3. Append from the below as appropriate

    # 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. Exit

    docker@default:~$ exit
    
  5. Restart docker machine

    docker-machine restart default
    
  6. Update environment settings

    eval $(docker-machine env default)
    

Above steps are slightly tweaked but as given in troubleshooting guide: https://docs.docker.com/toolbox/faqs/troubleshoot/#/update-varlibboot2dockerprofile-on-the-docker-machine

I ran into this exact same problem yesterday and none of the "popular" answers (like fixing DNS to 8.8.8.8) worked for me. I eventually happened across this link, and that did the trick ... https://github.com/docker/for-win/issues/16

Between Docker for Windows, Windows 10 and Hyper-V, there seems to be a problem during the virtual network adapter creation process. Specifically, you might end up with two "vEthernet (DockerNAT)" network adapters. Check this with Get-NetAdapter "vEthernet (DockerNAT)" (in an elevated PowerShell console). If the result shows more than one adapter, you can disable and rename it with:

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

Then open up Device Manager and delete the disabled adapter (for some reason you can do this from here, but not from the Network and Sharing Center adapters view).

I assume that you have a network problem. Are you behind a proxy? Is it possible that it filters the connection to docker.io or blocks the docker user agent?

I installed the toolbox and ran your test. It works fine, here:

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$

On Windows 10. Just right-click on the systray docker icon-> Settings... -> Rest -> Restrart Docker

I had this same problem with boot2docker and fixed it by restarting it with:

boot2docker restart

I just ran into this today with 1.10.1 and none of the existing solutions worked. I tried to restart, upgrade, regenerate certs, ...

I noticed that I had a lot of networks created on the machine. After removing them with:

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

The DNS started working again.

Note: You may ignore errors about pre-defined networks

If you are behind proxy it is not enough to set HTTP_PROXY and HTTPS_PROXY env. You should set it while machine creation.

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

In my case, installing docker on Alpine Linux I get the error:

Network timed out while trying to connect to https://index.docker.io/v1/repositories/library/........

Using the script here: https://github.com/docker/docker/blob/master/contrib/download-frozen-image-v2.sh

Works. It downloads the image using curl and then shows you how to untar and 'docker load' it.

I tried the above methods of static DNS at 8.8.8.8 and disabling ipv6 (I didn't understand the proxy thing) and none of them worked for me.

EDIT 9/8/2016:

I was initially using dropbear instead of openssh. Reinstalled Alpine with openssh fixed the problem.

The next problem was 'ApplyLayer exit status 1 stdout: stderr: chmod /bin/mount: permission denied' error during pull.

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

To build the Docker image, I had to disable the following grsec protections. Modify the /etc/sysctl.d/grsec.conf as follows:

kernel.grsecurity.chroot_deny_chmod = 0 kernel.grsecurity.chroot_deny_mknod = 0 kernel.grsecurity.chroot_caps = 0 # related to a systemd package/CAP_SETFCAP

in alpine's case though it's

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

reboot

Restarting Docker or recreating the image did not help. I rebooted Windows to no avail.

Astoundingly, when I ssh'ed into the running container and did curl https://index.docker.io/v1/repositories/library/hello-world/images I got a perfectly valid response.

I used the Docker Toolbox with VirtualBox on 64bit Windows 10 Pro.

The solution in my case was to uninstall the old Docker version and install the new one that uses Hyper-V instead of VirtualBox.

Now Docker works again.

Rakesh Prashanth S

If you are behind proxy kindly use below commands

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

Try this if you can fetch latest ubuntu

sudo docker run -it ubuntu bash

Unable to find image ubuntu:latest locally

latest: Pulling from library/ubuntu b3e1c725a85f: Pull complete

4daad8bdde31: Pull complete

63fe8c0068a8: Pull complete

4a70713c436f: Pull complete

bd842a2105a8: Pull complete

Digest:

sha256:7a64bc9c8843b0a8c8b8a7e4715b7615e4e1b0d8ca3c7e7a76ec8250899c397a

Status: Downloaded newer image for ubuntu:latest

It worked for me finally :)

Another scenario: if your docker network adapter is disabled, it will fail with this error. The adapter is named "vEthernet (DockerNAT)" or similar. Apparently this adapter is involved somehow in the normal docker pull behavior. Enable it back to solve the problem.

auxiLum Support

Create a systemd drop-in directory for the docker service:

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

Create a file called /etc/systemd/system/docker.service.d/http-proxy.conf that adds the HTTP_PROXY environment variable:

[Service]

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

Hope it helps

Nir Weinberg

On Windows this happened when I moved from a work network to a home network.

To solve it, run:

  1. docker-machine stop
  2. docker-machine start
  3. docker-env
  4. "C:\Program Files\Docker Toolbox\docker-machine.exe" env | Invoke-Expression
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!