前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云原生制品那些事(4):Registry作用原理

云原生制品那些事(4):Registry作用原理

作者头像
Henry Zhang
发布2023-04-04 09:10:16
7110
发布2023-04-04 09:10:16
举报
文章被收录于专栏:亨利笔记

题图摄于德州圣安东尼奥

注:微信公众号不按照时间排序,请关注“亨利笔记”,并加星标以置顶,以免错过更新。

VMware招聘机器学习和云原生开发工程师

本篇继续和大家说说镜像那些事,是连载之四,从《Harbor权威指南》一书节选的纯技术干货,敬请关注、转发和收藏。

第一篇:容器镜像的结构

第二篇:OCI 镜像规范

第三篇:OCI 制品

第四篇:Registry 的作用原理

《Harbor权威指南》目前当当网优惠中,点击下图直接购买。

容器镜像一般由开发人员通过 “docker build” 之类的命令构建,镜像在生成后都会被保存在开发机器的本地镜像缓存中,供本地开发和测试使用。

从另一方面来看,容器镜像很重要的一个作用是作为可移植的应用打包形式,在其他环境下无差别地运行所封装的应用,所以本地生成的镜像有时需要发送到其他环境下,如其他开发人员的机器、数据中心的机器或者云端计算节点。这时需要一种能在不同环境中传输镜像的有效方法,而镜像传输和分发中关键的一环就是镜像的 Registry(注册表)。Registry 有服务发现模式下服务注册的含义,实际应用中,用户往往称镜像 Registry 为镜像仓库,说明 Registry 不仅能注册镜像,还有存储镜像和管理镜像的功能。(本文为公众号:亨利笔记 原创文章)

下图描绘了镜像在单台(本地)计算机上容器生命周期中的状态变化,对开发者而言,镜像还可被推送到Registry上,也可以从 Registry 下载镜像。

如果上图所示的推送和拉取发生在不同的计算环境之间,则可以实现跨环境的镜像传送,而且在不同的环境下得到的镜像是一样的,可以无差别地运行,如下图所示。

在实际环境下,镜像的构建者往往是少数(如开发人员),绝大多数用户或机器集群都是镜像的消费者,这样的模式通常被称为镜像的分发,既可以是开发团队成员之间共享应用镜像,也可以是运维人员通过镜像发布应用到生产机器集群的各个节点,如下图所示。

从上述分发模式可以看到,Registry 是维系容器镜像生产者和消费者的关键环节,也是所有基于容器的云原生平台几乎都离不开 Registry 的根本原因。正是因为 Registry 的重要性及其在应用分发上的关键性,使 Registry 非常适合进行镜像管理,比如权限控制、远程复制、漏洞扫描等。Harbor 等镜像仓库软件就是在 Registry 镜像分发的基础功能上增加了丰富的管理能力,从而得到用户的青睐。 

公有Registry服务

从用户的访问方式来看,Registry主要分为公有 Registry 服务和私有 Registry 服务两种。公有 Registry 服务一般被部署在公有云中,用户可以通过互联网访问公有Registry 服务。私有 Registry 服务通常被部署在一个组织内部的网络中,只服务于该组织内的用户。(本文为公众号:亨利笔记 原创文章)

公有 Registry 服务的最大优点是使用便利,无须安装和部署就可以使用,不同组织之间的用户可以通过公有 Registry 服务共享或者分发镜像。公有 Registry 服务也有不足:因为镜像被存放在云端存储之中,镜像之中的私密数据可能会因此泄露,因而对安全有要求的许多企业和政府等机构往往不允许存放镜像到公有 Registry 中;另外,使用公有 Registry 服务需要从公网下载镜像,在传输上需要较长时间,在频繁使用镜像的场景中,如应用开发测试的镜像构建和拉取等,效率较低。因此,公有 Registry 不太适用于本地镜像高频使用的场景。

 目前,公有 Registry 服务最著名的就是 Docker Hub,这个服务是随着 Docker 开源项目的发布而设立的,由 Docker 公司维护,是最常用的公有 Registry 服务。根据官方数据,Docker Hub 在 2020 年年初,每月的下载量达到80亿次之多。开发者可以在 Docker 容器管理工具中直接、免费使用Docker Hub,推送和拉取镜像都很方便,这也是 Docker 工具能够极快地被广大开发者接受和使用的原因之一。

需要指出的是,Docker Hub 的私有镜像服务虽然提供了保护用户私有数据的能力,但其在本质上还是公有镜像服务,因为镜像是被存放在公有云中的,公有 Registry 服务在安全和性能等方面的不足依然存在。(在搜狐、CSDN等网站转载亨利笔记的文章均为未经授权的剽窃)

除了Docker Hub,各大公有云服务商如亚马逊 AWS、微软 Azure、阿里云和腾讯云等,都有自己的 Registry 服务。这些云服务商提供的 Registry 服务既可满足自身云原生用户的镜像使用需求,加速云原生应用的访问效率;也可提供公网用户的镜像访问能力,便于镜像的分发和传送,如用户可从内网环境向云端 Registry 推送镜像等。

私有Registry服务

私有 Registry 服务可以克服公有 Registry 服务的不足:镜像被存放在组织内部的存储中,不仅可以保证镜像的安全性,又可以提高镜像访问效率。同时,在私有 Registry 服务中还能够进行镜像的访问控制和漏洞扫描等管理操作,因此私有 Registry 在大中型组织中通常都是首选方案。私有 Registry 服务的缺点主要是组织需要承担采购软硬件的成本,并且需要团队负责维护服务。

在私有环境下部署 Registry 服务的最简易方法就是从 Docker Hub 中拉取镜像部署Docker Registry 。Docker Registry 属于 Docker 容器管理工具的一部分,可存储和分发 Docker 及 OCI 镜像,主要面向开发者和小型应用环境,开源代码位于 GitHub的“docker/distribution”项目中。Docker Registry 结构简单、部署快速,适合小型开发团队共享镜像或者在小规模的生产环境下分发应用镜像。

在较大型的组织内部,由于用户、应用和镜像的数量较多、管理需求复杂,功能较单一的 Docker Registry 难以胜任,因此需要更全面的镜像管理方案。在开源软件中有 Harbor 和 Portus 等项目;在商用软件中有 Docker Trust Registry(DTR)和 Artifactory等产品,用户可根据需要选择合适的方案。

随着混合云在企业中使用越来越普遍,用户在私有云和公有云中都有应用运行,这就涉及两个 Registry 镜像同步和发布的问题。从效率和管理上看,在私有云和公有云中各部署一个 Registry 服务,可以使镜像就近下载。然后在两个 Registry 之间通过镜像同步的方式,将在私有环境下开发的应用镜像复制到公有云的生产环境下,可达到镜像的一致性,从而实现应用发布的目的。(本文为公众号:亨利笔记 原创文章)

Harbor Registry

Harbor Registry(又称 Harbor 云原生制品仓库或 Harbor 镜像仓库)由 VMware 公司中国研发中心云原生实验室原创,并于 2016 年 3 月开源。Harbor 在 Docker Registry 的基础上增加了企业用户必需的权限控制、镜像签名、安全漏洞扫描和远程复制等重要功能,还提供了图形管理界面及面向国内用户的中文支持,开源后迅速在中国开发者和用户社区流行,成为中国云原生用户的主流容器镜像仓库。

2018年7月,VMware 捐赠 Harbor 给 CNCF,使 Harbor 成为社区共同维护的开源项目,也是首个源自中国的 CNCF 项目。在加入 CNCF 之后,Harbor 融合到全球的云原生社区中,众多的合作伙伴、用户和开发者都参与了 Harbor 项目的贡献,数以千计的用户在生产系统中部署和使用 Harbor ,Harbor 每个月的下载量超过3万次。2020年6月,Harbor 成为首个中国原创的 CNCF 毕业项目。

Harbor 是为满足企业安全合规的需求而设计的,旨在提供安全和可信的云原生制品管理,支持镜像签名和内容扫描,确保制品管理的合规性、高效性和互操作性。Harbor 的功能主要包括四大类:多用户的管控(基于角色访问控制和项目隔离)、镜像管理策略(存储配额、制品保留、漏洞扫描、来源签名、不可变制品、垃圾回收等)、安全与合规(身份认证、扫描和 CVE 例外规则等)和互操作性( Webhook、内容远程复制、可插拔扫描器、REST API、机器人账号等)。(在搜狐、CSDN等网站转载亨利笔记的文章均为未经授权的剽窃)

Harbor 2.0 是一个包含了较多改进功能的大版本,其中最重要的功能是支持遵循 OCI 镜像规范和分发规范的制品,使 Harbor 不仅可以存储容器镜像,还可以存储 Helm Chart、CNAB 等云原生制品。这些制品和镜像一样,都能够设置访问权限和远程复制策略,并在界面上统一展示,大大方便了用户,也拓宽了 Harbor 的使用范围。因此,Harbor  已经从镜像仓库发展成为通用的云原生制品仓库。

随着功能日益完整,Harbor 的应用场景也越来越灵活,归纳起来有以下几种。

(1)持续集成和持续发布。持续集成和持续发布是容器最早的使用场景之一,应用的源代码经过自动化流水线编译和测试后,构建成容器镜像存入 Harbor,镜像再被发布到生产环境或者其他环境下,Harbor起到了连接开发与生产环节的作用。(本文为公众号:亨利笔记 原创文章)

(2)在组织内部统一镜像源。在企业等组织内部对镜像的来源和安全性有一定要求和规则,如果内部用户从公网下载任意镜像并在企业内部运行,则将引入各种安全隐患,如病毒、系统漏洞等。为此,企业会在内部统一设立标准镜像源,存放经过验证或者测试过的镜像让用户使用。采用 Harbor 是较好的选择,可对镜像设立访问权限,并按照项目组加以隔离。同时,可以对镜像定期扫描,在发现安全漏洞时拒绝用户下载并及时打补丁。管理员还可以对镜像进行数字签名,实现来源校验。(在搜狐、CSDN等网站转载亨利笔记的文章均为未经授权的剽窃)

(3)镜像跨系统传输。容器镜像的一个重要特性是不可更改(immutability),即镜像封装了应用的运行环境,可以在其他系统中无差别地重现该环境。这个特性决定了容器镜像必须具有可移动性,能在不同的环境下转移。Harbor 的远程内容复制恰到好处地提供了容器迁移的能力,无论是在用户不同的数据中心之间,还是在公有云和私有云之间,无论是局域网还是广域网,Harbor都能够实现不同系统的镜像同步,并且具备出错重试的功能,大大提高了运维效率。

(4)制品备份。容器镜像等制品的备份是从跨系统镜像传输衍生而来的用例,主要是把 Harbor 的镜像等制品复制到其他系统中,保留一个或多个副本。在需要时,可把副本数据迁回原 Harbor 实例,达到恢复的目的。

(5)制品本地访问。镜像等制品的本地访问也是从跨系统镜像传输衍生而来的用例,Harbor 可以把镜像等制品同时远程复制到若干个地点,如从北京的数据中心分别复制到上海、广州和深圳的数据中心,这样不同地理位置的用户可以就近获取制品数据,缩短了下载时间。

(6)数据存储。在 Harbor 2.0 支持 OCI 规范之后,更多的应用都可存放非镜像数据到 Harbor 中。比如,人工智能的模型数据和训练数据、边缘计算的设备介质等。这些数据被存放到 Harbor 后,最大的好处就是能够自动获得内容复制、权限控制等功能,无须另行开发类似的功能。

(未经授权,请勿转载本公众号文章)

《Harbor权威指南》目前当当网优惠中,点击上图直接购买。

《Harbor权威指南》招募英文版翻译人员

要想了解云原生、区块链和人工智能等技术原理,请立即长按以下二维码,关注本公众号亨利笔记 ( henglibiji ),以免错过更新。

欢迎转发、收藏以及点 “在看”和赞。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 亨利笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 私有Registry服务
  • Harbor Registry
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档