虽然我建议大家使用AWS S3,但是我在此将使用registry:2,把所有的数据存放在主机本地。
我们需要提前准备如下工作:
域名所对应的证书,我将使用regv2.piel.io
一个兼容.htaccess的密码
我将通过letsencrypt.org以及一个Docker脚本来快速创建第一个证书。
复制 [email protected]:fatk/docker-letsencrypt-nginx-proxy-companion-examples.git
修改docker-letsencrypt-nginx-proxy-companion-examples/dockerdocker-run/simple-site/docker-run.sh,将site.example.com修改为你将使用的域名
运行脚本
脚本运行后,将启动一个nginx实例,一个docker-gen实例,一个letsencrypt-nginx-proxy-companion实例以及最终的nginx实例。
我们来看下脚本运行成功后有哪些容器启动了:
看上去已经成功了,但是我们刚刚创建的证书在哪儿?
以及:
很好,接下来我们可以将regv2.piel.io.key以及fullchain.pem用于容器registry:2.
下面我们创建registry可以访问到的证书目录
最后一步,创建访问registry的用户名和密码,此为访问docker registry:2的最低安全措施配置。
该命令要求主机上已经存在registry:2 镜像,所以在运行htpasswd命令前它会自动下载此镜像。之后,此容器会自动停止。
检查下htpasswd是否已经被创建:
最后,运行registry:2
我们试一下是否可以登陆:
接下来我们试下是否可以下载、标记、上传容器镜像至我们的新镜像仓库。例如,下载一个jenkins https://hub.docker.com/_/jenkins/
验证下是否可用
很好,上传到我们的镜像仓库。
直到写这篇文章的时候,除了用Curl,还没有很好的方法可以直接看到镜像库中的镜像列表
可以通过JSON看到我们的新Jenkins镜像在我们的私有镜像库中
现在可以在我们的Rancher-test.piel.io环境中应用我们的registry了。
登陆Rancher,在基础架构 > 主机中点击添加主机。
将自动生成的命令在Rancher Host上运行。
一两分钟后主机将在Rancher管理界面中出现。由于我还没有配置主机信息,主机显示名称依然为“vultr.guest”, 我们可以通过菜单修改主机名称并添加标签。
接下来,我们添加私有registry并在新增加的主机上部署Jenkins。
在基础架构菜单 > 镜像库中点击“添加镜像库”,并选择自定义,添加相应的信息完成配置。
几分钟之后,Rancher server的私有镜像仓库就可以使用了。
下面让我们部署Jenkins容器。在基础架构 > 容器菜单中,点击“添加容器”
填写所需信息,在选择image一处输入regv2.piel.io:5000/piel-jenkins: latest并设置端口映射为Jenkins 8080到主机的80端口。
此处将需要一点时间下载镜像。
下面我们将看到我们又一个容器叫做“my-jenkins”已经启动了。
访问到Jenkins URL,http://regv2.piel.io。
通过docker ps再确认一次:
成功!我们现在已经完成了:
创建并加密了我们自己的私有镜像库
添加并标记了一个容器镜像
为Rancher Server添加了一个主机
为Rancher Server增加了一个私有镜像库
在主机上部署了一个Jenkins容器
确认容器已经部署成功