【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

温馨提示

对Docker容器技术或容器生产实施感兴趣的朋友欢迎加群讨论。我们汇集了Docker容器技术落地实施团队精英及业内技术派高人,在线为您分享Docker技术干货。我们的宗旨是为了大家拥有更专业的平台交流Docker实战技术,我们将定期邀请嘉宾做各类话题分享及回顾,共同实践研究Docker容器生态圈。

加微信群方法:

1.关注【有容云】公众号

2.留言”我要加群”

QQ群号:454565480

有容云微信二维码