【Docker实战】- Registry &Portus搭建详解

首先,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中,那么之前上传的镜像文件仍然存在,这就更方便大家使用。下面是安装之前进行的一些准备工作:

 

1.Docker安装

 

首先,选择一个合适的PC机做宿主机,其配置参数如下: CPU: Intel E8400 Duo CPU 3.0GHz  RAM: 2G  disk:300GCPU查看命令: more /proc/cpuinfo |grep "model name"Mem查看命令: grep MemTotal /proc/meminfo


 

2.Registry安装 

 

由于Docker和Registry更新比较快,所以我们在此宿主机中进行安装的时候,选择Registry2.1版本进行安装。

yum -y install docker-registry

 

 

 

至此,Docker和Registry的安装已经完成,下面开始进行配置和测试。

 

 

注:安装完成后需要对Docker和Registry进行enable and start。

 

二. Registry原理

 

Docker模型的核心部分是有效的利用分层镜像机制,镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。不同的Docker容器可以共享一些基础的文件系统层,同时再加上自己独有的改动层,大大提高了存储的效率。由于最终镜像最终是以tar.gz的方式静态存储在服务器端,这种存储适用于对象存储而不是块存储。

 

 

三.Registry配置

 

 1.启动Registry容器

 

sudo docker run –d –p 80:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry  registry:2

 

 

Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。运行docker ps看一下容器情况:

 

 

说明我们已经启动了Registry服务,打开浏览器输入http://127.0.0.1:80/v2,出现下面情况说明Registry运行正常。

 

 2.客户机访问Registry

 

对于需要访问Registry仓库的客户机来说,首先需要修改/etc/sysconfig/docker的配置文件:添加 --insecure-registry 192.168.0.70:80

 

 

  3.客户端向Registry存放镜像

 

首先,需要docker tag给需要上传的镜像文件打标。然后再从本地上传镜像到仓库。

 

 

 4.客户端向仓库Pull镜像

 

在另外一台主机上使用pull从192.168.0.70的仓库中把镜像给Pull下来

 

 

 

通过以上操作就可以看到我们已经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自动记录,并可被管理员进行用户分析。

 

 1.安装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

 

 

到这里docker-compse就完成了。

 

 2.从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。进行构建安装。(此处省略掉)

 

 

由于Portus在安装过程中,需要下载几个依赖的镜像包,例如: Portus安装依赖MariaDB,portus_web.tar、rails4.2.2tar,Registry2.1.1.tar安装过程中下载比较慢。我们先下载了再进行安装过程。

 

 

由于我先把这几个已经下载完成,所以首先拷贝到宿主机的目录中了,需要直接解压。

 

 

 3.安装Portus程序

 

安装之前需要把拷贝到宿主机中的几个依赖镜像给load到Images中。

 

 

关于Registry的存储路径修改,请在安装前先到compose中修改docker-compose.yml.template文件。这里面包含web端口和挂载volumes等参数。然后,再执行安装脚本 ./compose-setup.sh -e 192.168.0.70。(由于本实例重新安装了Registry,所以,此处宿主机和容器的端口都是5000。)

 

 

然后到Portus源代码文件中执行./compose-setup.sh。

 

 

 

到此,Portus的安装已经完成.。

 

 4.修改Docker配置文件

 

此时,我们还需要修改vi /lib/systemd/system/docker.service    把--insecure-registry 192.168.0.70:5000这句加到ExecStart=/usr/bin/docker这个配置项后。

 

 

重启Docker

systemctl daemon-reloadsystemctl restart docker

重启portus容器

docker start portus_db_1 portus_web_1 portus_crono_1 portus_registry_1

可以在浏览器中打开登录窗口。

 

 

在客户机中需要修改 /etc/sysconfig/docker下的文件。

 

 

二.Portus配置与验证 

 

1.登录配置程序

 

Portus的登录界面需要创建用户名和密码。然后进行Registry的设置。

 

 

 

 

创建test01和test02帐户,并Enabled帐户,然后进行登录测试。

 

 2.上传镜像测试

 

 

 

 

 3.下载镜像测试

 

 

总结

 

Docker Registry的创建私有仓库的方法有很多种。像京东的Docker镜像存储系统--Speedy,Registry+Nginx &SSL等后续将进一步探究, 实现开发、测试以及生产的一体化流程,敬请期待!

 

本文电子书下载:

云盘下载:http://pan.baidu.com/s/1jHfP9Dc

网页下载:http://www.youruncloud.com/help/115.html

博客期刊:http://www.youruncloud.com/blog/0_3.html

 

 

分享:【Docker实战】- Registry &Portus搭建详解

有容云-构筑企业容器云 www.youruncloud.com

调查问卷

1、您所在的公司在IT方面面临哪些挑战? (最少选1项)

技术架构老旧过时,业务需要IT从传统架构转向互联网架构
需要管理使用多个云,避免vendor locked-in
IT资产(例如虚拟机或者物理服务器)的资源利用低,成本高昂难以承受
业务有强烈弹性需求 (比如,短期内用户访问量剧增)
使用微服务架构
开发、测试、生产环境不统一,企业内缺乏统一交付标准
运维工作复杂、自动化程度低,产品交付周期长
缺乏服务于内部其他业务部门或者第三方应用,且具备完善的计费及权限模块的PaaS平台
其他

2、您所在的公司在使用哪些私有、公有云解决方案?(最少选1项)

OpenStack
CloudStack
VMware
AWS
Azure
阿里云
金山云
腾讯云
UCloud
青云
其他

3、您是如何看待开源软件的?您所在的公司是否有使用开源软件?


没有,但有意向
没有,不接受

4、请问您所在的公司所属行业是?

传统金融、新金融
运营商
互联网
其他

5、您所在的公司在使用哪些容器管理方案?(最少选1项)

Kubernetes
Mesos
Docker Swarm
Rancher
没有

6、您所在的公司在使用容器管理方案时,认为其最需要改善的功能项是?(最少选1项)

网络管理方案
存储管理方案
易用性
完整性
没有
           

文章归档