一个优秀的镜像仓库是什么样的?

一、镜像仓库的类型

常见的镜像仓库有三种:

1.Container Registry

Container Registry是一个应用程序,用于上传(推送)和下载(拉)容器图像。

从历史上看,注册管理机构规范完全由Docker定义,最近通过OCI分布规范独立完成。

目前版本的Openshift内部使用的是docker registry V2,作为bulid config成功以后的镜像存放位置。

2.Enterprise Registry

Enterprise Registry,它提供了更多适用于企业环境的附加功能。

这些功能的例子包括:

  • 高级访问控制管理(RBAC)
  • 支持各种认证系统
  • 漏洞扫描
  • image签名验证
  • HA和灾备

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的企业级功能

  • 异地复制
  • 高可用性和可扩展性
  • 安全扫描
  • 自动构建触发器
  • 时间机器image回滚(基于build版本的回退)
  • 细粒度的访问控制
  • 详细的日志和审计
  • 自动连续垃圾收集,无需停机
  • 与多个存储后端集成(ceph等)
  • 支持多种身份提供商:LDAP,OAuth,OpenStack Keystone等。
  • 加密的CLI密码
  • 洪流分布
  • 容器和应用程序注册
  • 与Quay.io保持一致的UI和代码库

镜像扫描:

自动构建:

通过集成到GitHub,Bitbucket等,自动构建存储库推送操作上的映像。随着代码(GitHub,Bitbucket,GitLab和Git)中的推送操作发生,Quay将自动构建新版本的应用程序

image回滚:

Time Machine提供图像回滚,查看标签历史记录,快速轻松地切换图像构建。

查看image build历史记录,并可以选择某个版本的构建进行回退;

细颗粒度的RBAC配置:

支持许多身份提供商:LDAP,OAuth,OpenStack Keystone等。

事件和使用日志

  • 针对存储库捕获所有事件
  • Pull, push events
  • 权限更改
  • build事件
  • 标签更改

自动压缩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的前提是:

  • Postgres或MySQL数据库,具有自动备份和故障转移功能。
  • 高可用性分布式存储引擎,如Amazon S3,Google Cloud Storage,Ceph RADOS或Swift。 不建议在HA设置中使用本地存储和NFS。
  • 运行在中型机器上的Redis服务器。 Redis不需要故障转移或备份。
  • 支持TCP直通的负载均衡器。
  • 至少有三台适用于集群的中型机器。

配置异地复制后,容器先push到本地或者位置最近的repo。然后image将在后台被复制到其他repo。 复制的规则是可配置的。

魏新宇

  • "大魏分享"运营者、红帽资深解决方案架构师
  • 专注开源云计算、容器及自动化运维在金融行业的推广
  • 拥有MBA、ITIL V3、Cobit5、C-STAR、TOGAF9.1(鉴定级)等管理认证。
  • 拥有红帽RHCE/RHCA、VMware VCP-DCV、VCP-DT、VCP-Network、VCP-Cloud、AIX、HPUX等技术认证。

原文发布于微信公众号 - 大魏分享(david-share)

原文发表时间:2018-06-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

OpenStack Kolla源码分析–Ansible

Kolla介绍 Kolla项目利用Docker、Docker-Compose、Ansible来完成部署OpenStack,目前Kolla已经能够完成一个all-...

3786
来自专栏魏琼东

AgileEAS.NET平台开发实例-药店系统-快速的SAAS开发体验

一、AgileEAS.NET应用开发简介 在4月份,callhot写过一系列的有关于AgileEAS.NET平台的开发应用的系列AgileEAS.NET平台开发...

1976
来自专栏云计算

如何在企业中部署Docker

微服务组成的原生云应用程序,Docker通常是核心,因为它提供了构建,运输和运行Linux容器的绝佳方式。

3779
来自专栏李蔚蓬的专栏

An overview of the Web(Web概述)

C/S结构和B/S结构是当今世界网绍程序开发体系结构的两大主流.目前,这两种结构都有自己的市 场份和客户群。但是,这两种体系结构又各有各的优点和缺点,下面将从...

683
来自专栏魏艾斯博客www.vpsss.net

Linux 服务器压力测试工具 – webbench 安装及使用教程

1833
来自专栏云计算D1net

六款不容错过的开源持续集成工具

持续集成是敏捷软件开发工作当中的一大组成部分。从一轮冲刺到下一轮冲刺,技术团队在“不断前进”的同时持续推出各类增量化功能。不过当开发人员高度专注于添加功能的同时...

3067

Docker的企业级部署

Docker现在十分热门。这个开源项目向全世界展示了软件容器化的力量。引用维基百科的话,“Docker使用Linux内核的资源隔离功能,允许独立的容器在一个Li...

2707
来自专栏Java架构师历程

推介7个CI / CD(持续集成和持续部署)工具

越来越多的工程团队正在采用敏捷开发,推动更短,更快的发布周期。代码库增长和创建新生产构建的频率导致持续集成和持续部署/交付工具的兴起。

1922
来自专栏EAWorld

为什么有了Docker registry还需要Harbor?

目录: 一、Harbor的安全机制 二、Harbor的镜像同步 三、Harbor与K8s的集成实践 四、两个小贴士 五、总结 Habor是由VMWare公司开源...

3925
来自专栏腾讯开源的专栏

【开源公告】微信小程序解决方案 Westore 开源

1KB javascript覆盖状态管理、跨页通讯、插件开发和云数据库开发。 ? 众所周知,小程序本身的工程化十分优秀,不管从组件化、开发、调试、发布、灰度、...

2453

扫码关注云+社区