Docker私人注册使用自签名证书

我想运行一个广泛可用的私人dockerregistry。 所以我可以推送和从其他服务器的图像。

我正在学习这个教程: doc1 & doc2

我执行了3个步骤:首先,我创build了我的证书和密钥(如CNAME填充我的ec2-hostname)

mkdir -p certs && openssl req \ -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \ -x509 -days 365 -out certs/domain.crt 

比我创build我的dockerregistry,使用此密钥。

 docker run -d -p 5000:5000 --restart=always --name registry \ -v `pwd`/certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ registry:2 

比我复制domain.crt的内容到/etc/docker/certs.d/ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/ca.crt我重新启动我的docker: sudo service docker restart时我尝试推送一个图像,我得到以下错误:

 unable to ping registry endpoint https://ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/v0/ v2 ping attempt failed with error: Get https://ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/v2/: net/http: TLS handshake timeout v1 ping attempt failed with error: Get https://ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/v1/_ping: net/http: TLS handshake timeout 

我真的不知道我在想什么,或者做错了什么。 有人可以帮帮我吗。 谢谢

我不确定你是直接复制/粘贴你的密码,但是文件path应该是/ etc / docker / certs.d

您目前有etc / docker / cert.d / registry .ip:5000 / domain.crt

错误消息显示“TLS握手超时”。 这表示没有任何进程在端口5000上进行侦听(使用netstat进行检查),或者端口从您尝试推送镜像的位置(AWS安全组中的开放端口)closures。

Interesting Posts