Docker Community Forums

Share and learn in the Docker community.

FATA[0025] io timeout on docker image push

We are having an I/o timeout issue when pushing to docker hub.

FATA[0025] Put https://index.docker.io/v1/repositories/thecompany/therepo/: dial tcp: lookup index.docker.io on 192.168.0.1:53: read udp 192.168.0.1:53: i/o timeout

It seems to be irradic and iinitially erred out mid-push of one of the images. Subsequent push attempts error out immediately. Over the weekend I was able to get one of them to upload after many attempts (lucky timing somehow?)

Restarting boot2docker (as suggested in Pulling Docker images: i/o timeout) and even rebooting the machine seem to make no difference.

Are you using proxy or connected to VPN? Can you try curl -v https://index.docker.io:443 and post the result?

Have tried both on and off VPN.

$ curl -v https://index.docker.io:443
* Rebuilt URL to: https://index.docker.io:443/
* Hostname was NOT found in DNS cache
*   Trying 162.242.195.84...
* Connected to index.docker.io (162.242.195.84) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
* Server certificate: *.docker.io
* Server certificate: RapidSSL SHA256 CA - G3
* Server certificate: GeoTrust Global CA
> GET / HTTP/1.1
> User-Agent: curl/7.37.1
> Host: index.docker.io
> Accept: */*
>
< HTTP/1.1 301 MOVED PERMANENTLY
* Server nginx/1.6.2 is not blacklisted
< Server: nginx/1.6.2
< Date: Tue, 02 Jun 2015 19:16:44 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: close
< X-Frame-Options: SAMEORIGIN
< Location: https://registry.hub.docker.com/
< Strict-Transport-Security: max-age=3153600
<
* Closing connection 0

Now getting the same error from a pull.

Pulling repository centos
FATA[0045] Get https://index.docker.io/v1/repositories/library/centos/images: dial tcp: lookup index.docker.io on 192.168.0.1:53: read udp 192.168.0.1:53: i/o timeout```

Can you put the result of docker version and docker info?

Client version: 1.6.2
Client API version: 1.18
Go version (client): go1.4.2
Git commit (client): 7c8fca2
OS/Arch (client): darwin/amd64
Server version: 1.6.2
Server API version: 1.18
Go version (server): go1.4.2
Git commit (server): 7c8fca2
OS/Arch (server): linux/amd64```
Containers: 0
Images: 0
Storage Driver: aufs
 Root Dir: /mnt/sda1/var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 8
 Dirperm1 Supported: true
Execution Driver: native-0.2
Kernel Version: 4.0.3-boot2docker
Operating System: Boot2Docker 1.6.2 (TCL 5.4); master : 4534e65 - Wed May 13 21:24:28 UTC 2015
CPUs: 4
Total Memory: 1.91 GiB
Name: boot2docker
ID: UBKX:TV4S:2L3N:SLBG:CHO3:6A76:IWFW:T6JO:QIUN:G5TR:NMRE:R3PC
Debug mode (server): true
Debug mode (client): false
Fds: 11
Goroutines: 17
System Time: Wed Jun  3 02:51:48 UTC 2015
EventsListeners: 0
Init SHA1: 7f9c6798b022e64f04d2aff8c75cbf38a2779493
Init Path: /usr/local/bin/docker
Docker Root Dir: /mnt/sda1/var/lib/docker
Username: eyecantell
Registry: [https://index.docker.io/v1/]```

Note that I removed the images and containers in order to rebuild fresh. Thats when the pull error showed up.

It appears that the DNS lookup is failing. I would suggest switching your host DNS to something else, say 8.8.8.8 and see if you are able to push.

My log:

curl -v https:// index. docker.io:443

  • Rebuilt URL to: https:// index. docker.io:443/
  • Hostname was NOT found in DNS cache
  • Trying 162.242.195.84…
  • Connected to index.docker.io (162.242.195.84) port 443 (#0)
  • successfully set certificate verify locations:
  • CAfile: none
    CApath: /etc/ssl/certs
  • SSLv3, TLS handshake, Client hello (1):
  • SSLv3, TLS handshake, Server hello (2):
  • SSLv3, TLS handshake, CERT (11):
  • SSLv3, TLS handshake, Server key exchange (12):
  • SSLv3, TLS handshake, Server finished (14):
  • SSLv3, TLS handshake, Client key exchange (16):
  • SSLv3, TLS change cipher, Client hello (1):
  • SSLv3, TLS handshake, Finished (20):
  • SSLv3, TLS change cipher, Client hello (1):
  • SSLv3, TLS handshake, Finished (20):
  • SSL connection using ECDHE-RSA-AES128-GCM-SHA256
  • Server certificate:
  • subject: OU=GT98568428; OU=See www.rapidssl.com/resources/cps ©15; OU=Domain Control Validated - RapidSSL®; CN=*.docker.io
  • start date: 2015-03-19 17:34:32 GMT
  • expire date: 2018-04-21 01:51:52 GMT
  • subjectAltName: index.docker.io matched
  • issuer: C=US; O=GeoTrust Inc.; CN=RapidSSL SHA256 CA - G3
  • SSL certificate verify ok.

GET / HTTP/1.1
User-Agent: curl/7.35.0
Host: index.docker.io
Accept: /

< HTTP/1.1 301 MOVED PERMANENTLY

  • Server nginx/1.6.2 is not blacklisted
    < Server: nginx/1.6.2
    < Date: Wed, 03 Jun 2015 19:11:31 GMT
    < Content-Type: text/html; charset=utf-8
    < Transfer-Encoding: chunked
    < Connection: close
    < X-Frame-Options: SAMEORIGIN
    < Location: https://registry.hub.docker.com/
    < Strict-Transport-Security: max-age=3153600
    <
  • Closing connection 0
  • SSLv3, TLS alert, Client hello (1):

Thanks for your help @sbasyal. Pushes/Pulls seem to be working for us again. I will look into the DNS settings.

I have also experienced i/o timeout issues for pushing and pulling. What is the root cause of this issue? I was just trying to walk through some of the simple Docker tutorials and encountered these issues.

$ docker push aerodame/sinatra
The push refers to a repository [docker.io/aerodame/sinatra] (len: 2)
Sending image list
Put https://index.docker.io/v1/repositories/aerodame/sinatra/: dial tcp: lookup index.docker.io on 192.168.1.1:53: read udp 192.168.1.1:53: i/o timeout

bash-3.2$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
aerodame/sinatra devel 487c498860df 32 hours ago 318.7 MB
aerodame/sinatra v2 487c498860df 32 hours ago 318.7 MB

$ docker version
Client:
Version: 1.8.0
API version: 1.20
Go version: go1.4.2
Git commit: 0d03096
Built: Tue Aug 11 17:17:40 UTC 2015
OS/Arch: darwin/amd64

Server:
Version: 1.8.0
API version: 1.20
Go version: go1.4.2
Git commit: 0d03096
Built: Tue Aug 11 17:17:40 UTC 2015
OS/Arch: linux/amd64

@aerodame

If you are on mac, while using docker-machine check for the following

docker-machine ssh default
root@default:~# cat /etc/resolv.conf 
nameserver 10.0.2.3

and change it to

root@default:~# cat /etc/resolv.conf 
nameserver 8.8.8.8

I’ve been having issue with the docker pushing image to my private registry until the changed the /etc/resolv.conf to
nameserver 127.0.0.1.

Looks like DOCKER ignores the /etc/hosts and trying to use the resolv.conf nameserver to lookup host name including localhost.