生产环境下如何部署Docker Registry


【编者的话】Registry是Docker用来存放镜像的,由于目前2.0刚出不久,1.0是目前比较健全的。本文描述了如何配置在Nginx代理下运行Registry,提供了用户验证、TLS加密支持。

在网上看了不少帖子,介绍搭建Docker Registry的很多,但是大部分要么是直接拿官方镜像拉下来run一下,要么就是配置Nginx在外面而并没有把Nginx容器化,再加上TLS各种证书的恶心,就没有找到一篇靠谱些的。当然,GitHub上官方的Docker Distribution里面的deploy这个markdown文档写的相当好,但是这个比较针对registry 2.0,目前公司内部急于上线产品,因此只能先用1.0来撑撑场面,逐渐向2.0转变。

首先是Nginx的配置,使用官方的nginx:latest镜像,然后对于Registry,也是直接使用官方的registry:latest,目前官方的registry:latest还是Registry 1.0版本。

由于需要覆盖原镜像中Nginx的配置文件,而且同时要启动Registry和Redis,因此直接使用Docker Compose来启动这些,一个YML文件搞定。所有的这些代码和配置文件都已经上传GitHub

在这个registry-compose文件夹下面,克隆下来直接运行docker-compose up就可以了,具体的配置文件也在里面,有兴趣可以看看。

在这个文件里面有一个localCA文件,里面是客户端需要的CA文件,因为认证证书是自己签发的,Docker不认可,因此需要把这个文件:
sudo mkdir -p /etc/docker/certs.d/localhost:9443
sudo cp devdockerCA.crt  /etc/docker/certs.d/localhost:9443/
sudo service docker restart    

这样就可以直接docker login了。

对于创建证书的这些问题,首先使用这个命令产生客户端文件:
openssl genrsa -out devdockerCA.key 2048

然后再产生一个crt文件:
openssl req -x509 -new -nodes -key devdockerCA.key -days 10000 -out devdockerCA.crt

产生server文件:
openssl genrsa -out dev-docker-registry.com.key 2048

剩下的具体请参考这篇文章,里面的产生证书部分些的很详细。

所有的代码如下部署好的Registry。功能就是使用HTTPS协议,可以对Registry进行用户名密码的认证。你可以直接docker-compose up启动。

下一篇文章中我们将看一下怎么集成分布式存储文件系统。

3 个评论

不错,期待下篇。
分享个compose:ttps://github.com/Jamlee/docker-compose-registry 个人用着玩的
:-) 加油

要回复文章请先登录注册