一、镜像仓库的类型
常见的镜像仓库有三种:
1.Container Registry
Container Registry是一个应用程序,用于上传(推送)和下载(拉)容器图像。
从历史上看,注册管理机构规范完全由Docker定义,最近通过OCI分布规范独立完成。
目前版本的Openshift内部使用的是docker registry V2,作为bulid config成功以后的镜像存放位置。
2.Enterprise Registry
Enterprise Registry,它提供了更多适用于企业环境的附加功能。
这些功能的例子包括:
3.托管Registry
托管Registry是作为公共互联网上的服务提供的多租户注册表。 托管注册机构通常是自助服务的,并根据私人存储库的数量定价。
最受欢迎的两个是Quay.io和DockerHub。
今天,我们会介绍quay.io
二、Quay从哪来到哪去?
Quay.io是第一个使用私有存储库的托管Registry。
CoreOS于2014年收购了Quay,以推出首个Enterprise Registry
今天,Quay.io托管服务每天提供数十TB的容器图像
今天,许多Quay Enterprise客户比Quay.io本身运行更大的部署
2018年1月30日,RedHat宣布已经签署了收购CoreOS。quay随之被收入囊中。
Quay会如何与Openshift整合呢?
OpenShift容器平台内部注册表,默认情况下已部署为OpenShift群集的一部分
为标准OpenShift用例提供足够的注册表功能。当然,OpenShift客户还可以继续使用来自ISV合作伙伴的第三方注册解决方案,如JFrog Artifactory和Sonatype Nexus。
目前业内有不少容器Registry,在这里面,quay无论功能还是性能,都是很强大的。
一个优秀的容器镜像仓库应该什么样子呢?应该具备以下的企业及功能。
三、Quay的企业级功能
镜像扫描:
自动构建:
通过集成到GitHub,Bitbucket等,自动构建存储库推送操作上的映像。随着代码(GitHub,Bitbucket,GitLab和Git)中的推送操作发生,Quay将自动构建新版本的应用程序
image回滚:
Time Machine提供图像回滚,查看标签历史记录,快速轻松地切换图像构建。
查看image build历史记录,并可以选择某个版本的构建进行回退;
细颗粒度的RBAC配置:
支持许多身份提供商:LDAP,OAuth,OpenStack Keystone等。
事件和使用日志:
自动压缩image:
将多个docker layer压缩成一个,以创建一个layer更少的image:
自动进行K8S应用部署:
$ helm registry install quay.io/jzelinskie/nginx
事件通知
发布电子邮件、quay通知、webhook发布、flowdock,hipchat,基于Quay Enterprise内部各种事件的通知
三、基本操作展现
本地部署或者使用云上的quay.io服务,账户登陆以后,首先常见repository:
可以指定是容器镜像仓库还是应用代码仓库,并且可以指定私有还是共有的:
选择谁可以使用这个repository:
创建成功,目前是空的:
查看tag,也是空的:
查看代码构建,无:
查看日志:
可以进行权限配置:
四、功能展现:源码变更触发自动构建
有一个web应用,原始的页面是:
首先配置webhook:
修改源码:
提交变更:
触发quay中的代码自动构建:
过一会,构建成功:
给新的镜像分配tag:
修改应用的dc,使用新的image,触发应用重新构建:
重新构建完毕后,页面变成:
五、功能展现:容器镜像扫描
quay的镜像安全扫描基于clair:
Clair项目是一个开源项目,使Quay Security Scanner能够检测Quay Enterprise中所有图像的漏洞,并在发现这些问题时通知开发人员。
查看quay的镜像扫描结果:
查看漏洞链接的CVE
六、功能展现:HA与异地复制
Quay配置HA的前提是:
配置异地复制后,容器先push到本地或者位置最近的repo。然后image将在后台被复制到其他repo。 复制的规则是可配置的。
魏新宇