设为首页 收藏本站
查看: 945|回复: 0

[经验分享] docker Registry && Portus安装

[复制链接]

尚未签到

发表于 2018-5-29 11:35:13 | 显示全部楼层 |阅读模式
首先,Docker Hub是一个很好的用于管理公共镜像的地方,我们可以在上面找到想要的镜像(Docker Hub的下载量已经达到数亿次);而且我们也可以把自己的镜像推送上去。但是,有的时候,使用场景需要我们有一个私有的镜像仓库用于管理自己的镜像,这个时候我们就通过Registry来实现此目的。本文详细介绍了本地镜像仓库Docker Registry & Portus的搭建过程(Portus是一个带UI管理的仓库管理软件),对于文中细节有兴趣或有疑问的朋友欢迎加群讨论。
注:文章由云舒网络原创,转载请注明出处。
Registry搭建篇
Docker & Registry环境准备
在谈到Registry的部署之前,我们首先要考虑设计一个什么样Registry的仓库环境,是部署测试环境,还是生产环境。如果是用于生产环境发布Registry,必须考虑如下因素:
a. 应在何处存储镜像?
b. 用户的权限是否受控?
c. 当发生问题,如何解决?日志是否可以查看?
d. 如何快速提取镜像?(注:这是至关重要的,如果依赖镜像进行构建测试环境、生产环境或自动化系统,这是取决仓库是否有生命力的最重要指标。)
本实例把存储镜像的路径放置到宿主机的文件路径下。例如:/opt/myregistry目录中。这样即使宿主机中Docker Registry 出现问题,我们再重创建一个,把此路径添加到新Registry Server中,那么之前上传的镜像文件仍然存在,这就更方便大家使用。下面是安装之前进行的一些准备工作:
Docker安装
首先,选择一个合适的PC机做宿主机,其配置参数如下: CPU: Intel E8400 Duo CPU 3.0GHz  RAM: 2G  disk:300GCPU查看命令: more /proc/cpuinfo |grep "model name"Mem查看命令: grep MemTotal /proc/meminfo
DSC0000.jpg

Registry安装
由于Docker和Registry更新比较快,所以我们在此宿主机中进行安装的时候,选择Registry2.1版本进行安装。
yum -y install docker-registry
DSC0001.jpg
DSC0002.jpg
至此,Docker和registry的安装已经完成,下面开始进行配置和测试。
DSC0003.jpg
注:安装完成后需要对Docker和Registry进行enable and start。
Registry原理
Docker模型的核心部分是有效的利用分层镜像机制,镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。不同的Docker容器可以共享一些基础的文件系统层,同时再加上自己独有的改动层,大大提高了存储的效率。由于最终镜像最终是以tar.gz的方式静态存储在服务器端,这种存储适用于对象存储而不是块存储。
一次docker pull 发生的交互

DSC0004.jpg

  • Client向Index请求,知道从哪里下载CentOS
2.     Index回复
3.     CentOS在RegistryA
4.     CentOS的Checksum,所有层的Token
5.     Client向Registry A请求, CentOS的所有层。Registry A负责存储CentOS,以及它所依赖的层、
6.     Regsitry A向Index发起请求,验证用户Token的合法性
7.     Index返回这次请求是否合法
8.     Client从Registry下载所有的层
9.     Registry从后端存储中获取实际的文件数据,返给Client
Registry配置
启动Registry容器
sudo docker run –d –p 80:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry  registry:2
DSC0005.jpg
Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。运行docker ps看一下容器情况:
DSC0006.jpg
说明我们已经启动了Registry服务,打开浏览器输入 http://127.0.0.1:80/v2,出现下面情况说明Registry运行正常。
DSC0007.jpg
客户机访问Registry
对于需要访问Registry仓库的客户机来说,首先需要修改/etc/sysconfig/docker的配置文件:添加 --insecure-registry 192.168.0.70:80
DSC0008.jpg
客户端向Registry存放镜像
首先,需要docker tag给需要上传的镜像文件打标。然后再从本地上传镜像到仓库。
DSC0009.jpg
客户端向仓库Pull镜像
在另外一台主机上使用pull从192.168.0.70的仓库中把镜像给Pull下来
DSC00010.jpg
DSC00011.jpg
通过以上操作就可以看到我们已经Pull的镜像,然后可以运行此镜像,开始你的应用之旅。到此应该说Registry基本搭建完成,但是仍然不适合实际的使用。因为不方便管理和查看到上传的镜像和权限设置。接下来我们介绍一个带UI管理的仓库管理软件—【Portus】
Portus搭建篇
注:请勿将本篇作为上篇Registry安装内容延续,以下内容为全新环境下的Portus搭建。
Portus安装
Portus(by SUSE)是用于 Docker Registry API(v2)的开源前端和授权工具,最低要求注册表版本是 2.1。它可以作为授权服务器和用户界面,用于新一代的 Docker Registry。具有以下优点:
1.)安全:Portus 实现了最新的Docker Registry中定义的新的授权方案。它允许对你所有的镜像进行细颗粒度控制,你可以决定哪个用户和团队可 push/pull 镜像。
2.)轻松管理用户: 在 Portus 映射你的公司,可以定义任意数量的 Team,并从 Team 添加和移除用户。Team 有三种类型的用户:Viewers ,只能 pull 镜像;Contributors,可以 push/pull 镜像;Owners,类似 contributors,但可以从 team 添加或移除用户。
3.)搜索: Portus 提供你的私人注册表的内容的预览,同时有一个快速搜索镜像的功能。
4.)审计: 用户的所有相关事件都会被Portus自动记录,并可被管理员进行用户分析。
安装Docker-Compose
首先,yum添加源
[ root@bogon]# yum -y install epel-release
安装python-pip
[root@ bogon]# yum -y install python-pip
安装docker-compose
pip install -U docker-compose
DSC00012.jpg
到这里docker-compse就完成了。
从Git到Portus的代码搭建
正常安装方法: 需要到Git Clone https://github.com/SUSE/Portus.git上获取Portus的源码。下载包Portus_git.tar.gz,解压此源码包,并修改Gemfile.lnk 的第一行:“https://rubygems.org”修改为“http://rubygems.org”。运行compose-setup.sh -e  server IP。进行构建安装。(此处省略掉)
DSC00013.jpg
由于Portus在安装过程中,需要下载几个依赖的镜像包,例如: Portus安装依赖MariaDB,portus_web.tar、rails4.2.2tar,Registry2.1.1.tar安装过程中下载比较慢。我们先下载了再进行安装过程。
DSC00014.jpg
由于我先把这几个已经下载完成,所以首先拷贝到宿主机的目录中了,需要直接解压。
DSC00015.jpg
安装Portus程序
安装之前需要把拷贝到宿主机中的几个依赖镜像给load到Images中。
DSC00016.jpg
关于Registry的存储路径修改,请在安装前先到compose中修改docker-compose.yml.template文件。这里面包含web端口和挂载volumes等参数。然后,再执行安装脚本 ./compose-setup.sh -e 192.168.0.70。(由于本实例重新安装了Registry,所以,此处宿主机和容器的端口都是5000。)
DSC00017.jpg
然后到Portus源代码文件中执行./compose-setup.sh。
DSC00018.jpg
到此,Portus的安装已经完成.。
修改Docker配置文件
此时,我们还需要修改vi /lib/systemd/system/docker.service    把--insecure-registry 192.168.0.70:5000这句加到ExecStart=/usr/bin/docker这个配置项后。
DSC00019.jpg
重启Docker
systemctl daemon-reloadsystemctl restart docker
重启portus容器docker start portus_db_1 portus_web_1 portus_crono_1 portus_registry_1
可以在浏览器中打开登录窗口。
DSC00020.jpg
在客户机中需要修改 /etc/sysconfig/docker下的文件。
DSC00021.jpg
Portus配置与验证
登录配置程序
Portus的登录界面需要创建用户名和密码。然后进行Registry的设置。
DSC00022.jpg
DSC00023.jpg
DSC00024.jpg
创建test01和test02帐户,并Enabled帐户,然后进行登录测试。
上传镜像测试
DSC00025.jpg
DSC00026.jpg
DSC00027.jpg
下载镜像测试
DSC00028.jpg
总结
Docker Registry的创建私有仓库的方法有很多种。像京东的Docker镜像存储系统--Speedy,Registry+Nginx &SSL等后续将进一步探究, 实现开发、测试以及生产的一体化流程,敬请期待!
本文电子书下载:
网页下载:
http://www.cloudsoar.com/down/ddoc/v1.1/
百度云盘下载:
http://pan.baidu.com/s/1jHfP9Dc
温馨提示:
云舒网络携手Rancher Labs推出【Rancher | 实战微信群】,在线为您分享Docker技术干货,更有往期回顾精选期刊等你拿!
本群汇集了Rancher中国最强技术精英团队及业内技术派高人,宗旨是为了大家拥有更专业的平台交流Rancher实战技术,实时与Rancher创始团队面对面!同时欢迎各位分享自己的经验、疑难问题,我们将定期邀请分享嘉宾做各类话题分享及回顾,共同实践研究Docker容器生态圈。
对Rancher和Docker技术感兴趣、或对本文中细节需继续探讨的朋友,欢迎加入本群参与讨论!
加微信群方法:
1.关注【云舒网络】公众号
2.留言”我要加群”
QQ群号:216521218首先,Docker Hub是一个很好的用于管理公共镜像的地方,我们可以在上面找到想要的镜像(Docker Hub的下载量已经达到数亿次);而且我们也可以把自己的镜像推送上去。但是,有的时候,使用场景需要我们有一个私有的镜像仓库用于管理自己的镜像,这个时候我们就通过Registry来实现此目的。本文详细介绍了本地镜像仓库Docker Registry & Portus的搭建过程(Portus是一个带UI管理的仓库管理软件),对于文中细节有兴趣或有疑问的朋友欢迎加群讨论。
注:文章由云舒网络原创,转载请注明出处。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-482566-1-1.html 上篇帖子: Docker常见仓库介绍 下篇帖子: docker简明教程(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表