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是只能上传,下载,无法删除的。如果需要删除,需要你设置才行。

 Leave a Reply

(required)

(required)

This site uses Akismet to reduce spam. Learn how your comment data is processed.