342332 发表于 2016-8-11 09:43:08

内网部署支持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.
当然还得确保自签证书没问题。


qqqw1243 发表于 2016-8-13 16:13:15

哈皮东西

qqqw1243 发表于 2016-8-13 16:14:35

看那看那学习
页: [1]
查看完整版本: 内网部署支持ssl的docker registry