解决docker拉取镜像显示TLS handshake timeout的问题

解决 Docker pull 出现的 Server error: Status 0 while fetching image layer 的一个办法出现这个问题,一般的原因是无法连接到 docker hub,通过:

$ sudo systemctl stop docker
$ sudo docker -d -D

开启 debug 模式,然后再运行 pull 就会出现类似下面的错误:

DEBU[0282] Error contacting registry https://registry-1.docker.io/v1/: Get 
https://dseasb33srnrn.cloudfront.net/registryv2/docker/registry/
v2/blobs/sha256/a3/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4/data?
Expires=1449474474&Signature=Gw6Y0xqjZT-
1S8kPpNg9Z6GA~SH6SunDvh3eNGWvDQtBrotU9Qv6a3Mr6sAkP5L84zM32lsTxGrIehFKyEuwVncRy1sfEI-
4Ggiuvqedwaw61HFYYBefoQJHDUtHOxUZkOJ6AuUlxOJeKhfHyLDMmPf3H1NSQ8U8L5Mf8rUXL0M_&Key-
Pair-Id=APKAJECH5M7VWIS5YZ6Q: net/http: TLS handshake timeout 

很明显可以看出是连接不到 docker hub,那就需要查看网络原因了。可能需要个梯子。当然较简单的解决办法就是用国内的仓库,下面的方法就是使用国内的 daocloud 的仓库:

$ echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=http://f2d6cb40.m.daocloud.io\"" | sudo tee -a /etc/default/docker
$ sudo service docker restart

你可能感兴趣的:(错误解决)