Mar 152022
现在镜像仓库如果不支持HTTPS,证书如果不是经过认证,操作其实非常麻烦。其实结合DNSPod,可以帮你解决很多问题。
- 1年的ssl证书,你自己注册的域名
- 可以帮你解析内网的ip到域名,如果你机器可以访问公网。
我注册了一个域名专门用来做实验,chenshake.site, 专门给镜像仓库设置了一个主机名:hub。
hub.chenshake.site: 192.168.20.51
并且提交申请,正规的一年免费的SSL证书。我是下载 hub.chenshake.site_other.zip
# ll
total 16
-rw-rw-rw- 1 root root 4093 Mar 14 18:07 hub.chenshake.site_bundle.crt
-rw-rw-rw- 1 root root 4093 Mar 14 18:07 hub.chenshake.site_bundle.pem
-rw-rw-rw- 1 root root 1010 Mar 14 18:07 hub.chenshake.site.csr
-rw-rw-rw- 1 root root 1704 Mar 14 18:07 hub.chenshake.site.key
这个放到服务器上,就可以开始干活了。
yum install docker-ce
systemctl enable --now docker
mkdir /opt/certs
cp hub.chenshake.site_other/hub.chenshake.site.key /opt/certs/
cp hub.chenshake.site_other/hub.chenshake.site_bundle.crt /opt/certs/
#查看证书
ll /opt/certs/
total 8
-rw-r--r-- 1 root root 4093 Mar 15 09:25 hub.chenshake.site_bundle.crt
-rw-r--r-- 1 root root 1704 Mar 14 18:11 hub.chenshake.site.key
## 安装registry,-v 挂载证书和存储
docker run -d \
--restart=always \
--name registry \
-v /opt/certs:/certs \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/hub.chenshake.site_bundle.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/hub.chenshake.site.key \
-v /mnt/registry:/var/lib/registry \
-p 443:443 \
registry:2
这样就搞定。验证一下
docker pull busybox
docker tag busybox:latest hub.chenshake.site/busybox:latest
docker push hub.chenshake.site/busybox:latest
##查看
curl https://hub.chenshake.site:443/v2/_catalog
{"repositories":["busybox"]}
这样就基本搞定,可以工作了。需要知道的,默认registry是只能上传,下载,无法删除的。如果需要删除,需要你设置才行。