zhuyumu 发表于 2018-5-29 08:43:15

内网部署支持ssl的docker registry

  首先需要使用域名或主机名制作证书,自签证书在内网可以使用,因为内网可排除信任问题,自签证书流程可以参考使用自签的证书配置nginx的https。
  

  证书制作完成我们开始部署registry,当前registry v2版已经发布,所以我们使用v2版部署测试,部署之前需要运行docker daemon
  1、将制作好的证书copy到/etc/docker/certs.d/${domain}/ca.crt中,注意目录中的domain是registry的域名或主机名,同时也是制作证书时的输入的Common name。
  #] cp web1.crt /etc/docker/certs.d/web1\:5000/ca.crt
  然后重启docker daemon
  2、拉取官方registry镜像
  #] docker pull registry:2## docker pull registry:latest
  3、运行registry容器:
  #] docker run -d -p 5000:5000 --restart=always --name registry \
  -v /root/ssl:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/web1.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/web1.key \
  registry:2
  注意:参数 -v /root/ssl是证书所在目录

  4、测试将镜像push到仓库中
  将待push到仓库中的镜像打标签
  #] docker tag registry:2 web1:5000/registry
  

  push镜像

  push完之后,可以在本地使用docker pull web1:5000/registry
  

  5、在另外一台机器上pull镜像,首先需要将证书copy到这台机器的/etc/docker/certs.d/web1:5000/目录下

  并重名为ca.crt,然后重启docker daemon
  执行docker pull web1:5000/registry命令:

  拉取成功,registry部署完成。
  

  碰到的问题:在push和pull的时候出现x509:certificate signed by unknown authority,如下图:
  主要原因是没有将证书copy到/etc/docker/certs.d/web1:5000目录下,并需要将证书重命名为ca.crt.
  当然还得确保自签证书没问题。
  
页: [1]
查看完整版本: 内网部署支持ssl的docker registry