Ubuntu 16.04 安装Docker ,Pull Docker image的时候遇到docker pull TLS handshake timeout
docker run hello-world执行该语句报错。。。。遇到了下的问题,error pulling image configuration: Get https://dseasb33srnrn.cloudfront.NET/registry-v2/docker/registry/v2/blobs/sha256/e3/e369c36508565c0445257347
docker pull ubuntu
执行该语句报错。。。。
遇到了下的问题,
error pulling image configuration: Get https://dseasb33srnrn.cloudfront.NET/registry-v2/docker/registry/v2/blobs/sha256/e3/e369c36508565c04452573471f3d2744329ecc65c302bd642fc5672830f09c6a/data?Expires=1484796497&Signature=DMls8thKqq0TuI295Frs8~PVg5TcmGAC5BoFSmA3RiKZKZj4eATQNkOEZbLN2Bp3v~27YB3xRLCZFXEe1JXalrdZHrkEOM4OgEOribsFAGibFG67YYxW5WiDBnpZccmtUKVqLMABskt2teE2dwTn5WPAh8uIcbqlcchfwQY3nuA_&Key-Pair-Id=APKAJECH5M7VWIS5YZ6Q: net/http: TLS handshake timeout
解决方法是:
mkdir -p certs && openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
-x509 -days 365 -out certs/domain.crt
然后依次输入生成的证书的信息即可!!!
(填一些省市区县姓名信息等)
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
有时还可能会在次出现,以下是解决方案:
最近在做Docker相关的东西,发现只要一pull镜像,就出现如下的ERROR
x509: certificate signed by unknown authority.
调查后发现,是公司IT把https证书换成了公司的证书(目的大家自己猜)。
解决思路:把替换后的证书直接用openssl拉下来,然后加入到系统(我是Ubuntu)系统证书中,然后使用update-ca-certificates更新,最后重启docker服务,成功!!
方式1:
$ echo -n | openssl s_client -showcerts -connect dseasb33srnrn.cloudfront.net:443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /usr/local/share/ca-certificates/cloudfront.crt
上面的dseasb33srnrn.cloudfront.net是docker提示证书错误的网址。把这个网址替换成你的网站,同时把改下你要生成的证书名字就OK。
然后重启docker deamon
$ sudo service docker restart
方式2:
$ echo -n | openssl s_client -showcerts -connect dseasb33srnrn.cloudfront.net:443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> /etc/ssl/certs/ca-certificates.crt
$ update-ca-certificates
Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....
Adding debian:cloudfront.pem
done.
done.
同时替换上面的dseasb33srnrn.cloudfront.net就好了.
然后重启docker
$ sudo service docker restart
结语:
我上面的方式之所以可以搞定大多数由于公司IT部门替换https证书造成的错误,是因为很多程序是使用系统默认的证书(路径)。
对于一些特殊的程序,比如python pip,不使用系统默认的证书,而是使用自己的路径,可以强制它使用*方式2*生成的证书。
本人适合第二种方法。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
还可以这样解决:
出现这个问题,一般的原因是无法连接到 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/registry-v2/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 的仓库:
$ su do service docker restart
更多推荐
所有评论(0)