摘要:检查下是否已经被创建最后,运行我们试一下是否可以登陆接下来我们试下是否可以下载标记上传容器镜像至我们的新镜像仓库。几分钟之后,的私有镜像仓库就可以使用了。
上篇文档中,我已经详细介绍了如何快速简单的部署Rancher Server,启用Github认证以及数据保持方便后续的升级操作。在这篇文档中,我将梳理下如何创建一个有密码保护的私有Docker Registry以及如何和Rancher整合。我们将下载一个容器镜像,为其设置标签并推送至此Registry。最后,我们将通过Rancher Server部署此容器镜像。
虽然我建议大家使用AWS S3,但是我在此将使用registry:2,把所有的数据存放在主机本地。
我们需要提前准备如下工作:
域名所对应的证书,我将使用regv2.piel.io
一个兼容.htaccess的密码
我将通过letsencrypt.org以及一个Docker脚本来快速创建第一个证书。
复制 git@github.com:fatk/docker-letsencrypt-nginx-proxy-companion-examples.git
修改docker-letsencrypt-nginx-proxy-companion-examples/dockerdocker-run/simple-site/docker-run.sh,将site.example.com修改为你将使用的域名
运行脚本
$ git clone git@github.com:fatk/docker-letsencrypt-nginx-proxy-companion-examples.git $ cd docker-letsencrypt-nginx-proxy-companion-examples # Modify the script and replace site.example.com $ vi dockerdocker-run/simple-site/docker-run.sh $ ./docker-run.sh
脚本运行后,将启动一个nginx实例,一个docker-gen实例,一个letsencrypt-nginx-proxy-companion实例以及最终的nginx实例。
我们来看下脚本运行成功后有哪些容器启动了:
看上去已经成功了,但是我们刚刚创建的证书在哪儿?
$ ls volumes/proxy/certs dhparam.pem regv2.piel.io regv2.piel.io.crt regv2.piel.io.dhparam.pem regv2.piel.io.key
以及:
$ ls volumes/proxy/certs/regv2.piel.io account_key.json cert.pem fullchain.pem key.pem
很好,接下来我们可以将regv2.piel.io.key以及fullchain.pem用于容器registry:2.
下面我们创建registry可以访问到的证书目录
$ mkdir -p /data/docker-registry-certs $ cp volumes/proxy/certs/regv2.piel.io.key /data/docker-registry-certs/ $ cp volumes/proxy/certs/regv2.piel.io/fullchain.pem /data/docker-registry-certs/ $ mkdir /data/docker-registry-auth $ mkdir /data/docker-registry
最后一步,创建访问registry的用户名和密码,此为访问docker registry:2的最低安全措施配置。
$ docker run --entrypoint htpasswd registry:2 -Bbn pieltestuser "mkakogalb47" > /data/docker-registry-auth/htpasswd
该命令要求主机上已经存在registry:2 镜像,所以在运行htpasswd命令前它会自动下载此镜像。之后,此容器会自动停止。
检查下htpasswd是否已经被创建:
$ cat /data/docker-registry-auth/htpasswd pieltestuser:$2y$05$w3IqOzTdsDbot9ls1JpeTeHYr/2vv.PTx3dObRvT.JkfGaygfTkJy
最后,运行registry:2
$ docker run -d -p 5000:5000 --restart=always --name docker-registry -v /data/docker-registry:/var/lib/registry -v /data/docker-registry-auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" -v /data/docker-registry-certs:/certs -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/fullchain.pem" -e "REGISTRY_HTTP_TLS_KEY=/certs/regv2.piel.io.key" registry:2 $ docker run -d -p 5000:5000 --restart=always --name docker-registry -v /data/docker-registry:/var/lib/registry -v /data/docker-registry-auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" -v /data/docker-registry-certs:/certs -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/fullchain.pem" -e "REGISTRY_HTTP_TLS_KEY=/certs/regv2.piel.io.key" registry:2
我们试一下是否可以登陆:
$ docker login -u pieltestuser -p "mkakogalb47" -e wayne@wayneconnolly.com regv2.piel.io:5000 $ docker login -u pieltestuser -p "mkakogalb47" -e wayne@wayneconnolly.com regv2.piel.io:5000 WARNING: login credentials saved in /root/.docker/config.json Login Succeeded
接下来我们试下是否可以下载、标记、上传容器镜像至我们的新镜像仓库。例如,下载一个jenkins https://hub.docker.com/_/jenk...
$ docker pull jenkins $ docker tag jenkins:latest regv2.piel.io:5000/piel-jenkins:latest
验证下是否可用
很好,上传到我们的镜像仓库。
$ docker push regv2.piel.io:5000/piel-jenkins:latest
直到写这篇文章的时候,除了用Curl,还没有很好的方法可以直接看到镜像库中的镜像列表
$ curl -u pieltestuser:mkakogalb47 https://regv2.piel.io:5000/v2/_catalog {"repositories":["piel-jenkins"]}
可以通过JSON看到我们的新Jenkins镜像在我们的私有镜像库中
现在可以在我们的Rancher-test.piel.io环境中应用我们的registry了。
登陆Rancher,在基础架构 > 主机中点击添加主机。
将自动生成的命令在Rancher Host上运行。
$ sudo docker run -e CATTLE_AGENT_IP="45.32.190.15" -d --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.0.1 http://rancher-test.piel.io/v1/scripts/FF42DCE27F7C88BD7733:1461042000000:ryU0BaXJFo6c9zuHgeULdAtbCE $ sudo docker run -d --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v0.11.0http://rancher.piel.io/v1/scripts/BE455B92EA48EA1C1F12:1461042000000:mi433ChYRN9nfQSwB2FIlBnpPk
一两分钟后主机将在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容器
确认容器已经部署成功
注意:在本教程中使用的服务器现在已经退役啦。
下一篇我们将讨论如何通过Stack提供用户一个可管理、可描述、可快速部署的业务应用平台。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27963.html
摘要:三私有代码库阿里云使用引言使用肯定离不开和代码的集成。本着代码可靠性,服务器稳定性,功能扩展性综合对比,我们选择使用阿里云的库。 来自用户的DevOps实践分享,分享从开发代码到生产环境部署的一条龙操作的实践及经验, 包含工具技术的选型及考量、私有代码库与私有镜像库的应用等。 (一)容器服务的Rancher选型 1、为什么说是下一代核心技术 从互联网的多次变革说起,早期的C/S架构,到...
摘要:由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。设计时,就充分利用的技术,将其设计为分层存储的架构。镜像实际是由多层文件系统联合组成。分层存储的特征还使得镜像的复用定制变的更为容易。前面讲过镜像使用的是分层存储,容器也是如此。 本文只是对Docker的概念做了较为详细的介绍,并不涉及一些像Docker环境的安装以及Docker的一些常见操作和命令。 阅读本文大概需要15分...
摘要:我们为什么需要郑昀创建于关键词容器虚拟机私有云配置管理部署发布年年底,我们开始试着将原有的持续集成和持续发布流程,从迁移到上。累觉不爱的部署环境维护伤不起一线互联网公司的技术团队纷纷夸耀自己在生产环境发布的频次。 ——我们为什么需要 CloudEngine?郑昀 创建于2016/7/31关键词: 容器、Docker、OpenStack、虚拟机、私有云、Mesos、配置管理、部署、发布 ...
container-as-a-service-0x02 -- 项目构建&部署之道 By 苏依蜀黍 . 2016.06.08 分析 之前写了两篇,算是比较完善的称述了就目前的业务,容器服务在我司的应用,但是没有比较具体的讲如何构建以及部署,所以这一篇主要讲如何对项目进行容器化以及如何部署,对我司业务分类以后可以有以下几种类型: python应用 node.js应用 php应用 nginx服务 ...
阅读 2033·2021-11-23 09:51
阅读 3302·2021-09-28 09:36
阅读 1075·2021-09-08 09:35
阅读 1642·2021-07-23 10:23
阅读 3161·2019-08-30 15:54
阅读 2975·2019-08-29 17:05
阅读 416·2019-08-29 13:23
阅读 1243·2019-08-28 17:51