局域网内部署 Docker Registry(2)

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

命令中我们把证书所在的目挂载到了容器的 /certs 目录。然后分别指定了容器的环境变量 REGISTRY_HTTP_TLS_CERTIFICATE 和 REGISTRY_HTTP_TLS_KEY,这两个环境变量会引用我们常见的秘钥文件和证书文件。
好了,到目前为止新版的 Docker Registry 已经可以提供服务了。

在 client 端设置根证书

为了快速、方便和省钱,我们没有去购买商业版的证书。这种方式的弊端是:必须把我们生成的根证书安装到每一个需要访问 Registry 服务器的客户端上。具体做法如下:
把前面生成的证书文件 dcerts/domain.crt 复制到需要访问 Registry 服务器的机器上。放到目录 /etc/docker/certs.d/10.32.2.140:5000/ 中,并重命名为 ca.crt。当然这个目录需要你自己创建。最后重新启动 docker 服务:

$ sudo systemctl restart docker.service // 不同的系统重启服务的命令可能不一样。

终于大功告成了,让我们往 Registry 中推送一个镜像吧:

局域网内部署 Docker Registry

看,redis:3.2 已经被 tag 为 10.32.2.140:5000/myredis:20170520,并推送到了局域网中的 Docker Registry Server 中。
为了验明正身,我们还是到 10.32.2.140 上去看一下文件存储的状态:

从这张图中我们可以看到,myredis:20170520 真的已经被 Registry 保存到文件系统中了。

总结

由于安全性的考虑,配置局域网内可用的 Docker Registry 稍微有点麻烦。尤其是使用 IP 地址的配置方式,需要配置证书的 subjectAltName 才能正常工作。但完成配置后,使用局域网内的 Registry 还是很爽的。希望本文对有类似需求的朋友们有所帮助。

更多Docker相关教程见以下内容

Docker安装应用(CentOS 6.5_x64)

Ubuntu 14.04安装Docker 

Ubuntu 15.04下安装Docker 

Docker 安装实例

在 Ubuntu 15.04 上如何安装Docker及基本用法

Ubuntu 16.04上Docker使用手记

使用Docker分分钟启动常用应用 

Ubuntu 16.04下Docker修改配置文件不生效解决办法   

Docker 的详细介绍请点这里
Docker 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/27982ad436ca651dd48cc93984f3181e.html