很多人希望了解如何正确地选择容器注册表,以及为满足其软件开发需求提供的一些选择。

在2013年诞生的开源Docker引擎促使容器化成为实现云应用程序开发流程现代化的第一步。在Docker引擎出现之前,用户必须为特定的计算机/硬件配置应用程序。但这种方法的缺点是,将应用程序和数据从一台服务器移动到另一台服务器可能会很耗时。

但是,随着Docker Registry的推出,管理和组织容器注册表的长期挑战得到了解决。事实上,Docker Registry迅速成为了软件行业的标准。如今,Docker Registry帮助很多企业通过其软件开发过程在一个中心位置收集、存储和交付不同阶段的容器镜像。

本文概述了人们需要了解的容器注册表核心功能,以帮助选择适合软件开发需求的容器注册表。

什么是容器注册表?

容器注册表是一个高度可扩展的服务器端应用程序,它允许持续集成(CI)/持续交付(CD)系统、开发人员和测试人员存储在应用程序开发期间创建的图像。存储在容器注册表中的映像用于Kubernetes、DevOps和基于容器的应用程序开发。其示例包括Docker Hub、Amazon ECR和Azure。

如何选择合适的容器注册表?

在选择容器注册表时,市场并不缺乏一些教学法选择,这可能使选择合适的容器注册表成为一项艰巨的任务。但是,在用户开始选择之前,需要事先考虑的核心问题:

除了容器映像之外,还想承载其他工件吗?一些容器注册表支持其他类型的文件,例如Java、Node.js甚至Python包。另一方面,有些只支持容器镜像。

需要额外的安全性吗?只有少数容器注册表提供的功能更安全,每当用户将图像推送到注册表时会进行漏洞扫描。
应该使用本地还是托管容器注册表?

如果用户决定从一个容器迁移到另一个容器,则任务相对容易。

可用的容器注册表有哪些?

1.AWS弹性容器注册表(AWS ECR)

AWS ECR可以配置为支持私有和公共Docker注册表。这些注册表可与AWS IAM一起使用,以控制用户的访问级别、服务和应用程序。在本质上,可以定义哪些用户可以访问受保护的容器映像。

AWS ECR还配备了漏洞图像扫描功能,使其成为DevSecOps的基本功能。这是因为它使用Clair的公共漏洞和暴露(CVE)数据库来评估所发现问题的严重性。AWS ECR的另一个重要功能是不可变图像标签。在启用之后,这一功能可确保将映像推送到容器注册表之后,任何人都无法覆盖该映像。

2.Azure容器注册表(ACR)

微软公司的Azure容器注册表基于Docker Registry 2.0,其中身份验证由Azure RBAC管理。Azure的容器注册表具有大多数竞争对手尚未提供的功能,例如:

  1. 自动清除旧图像。
    未标记清单的保留策略。
    内容信任。

需要注意的是,内容信任是基于Docker创建的一个概念,它允许用户对推送到Azure容器注册表的图像进行签名。

在本质上,可能使用图像的应用程序/用户将其客户端配置为仅提取签名的图像。同时,Docker客户端可以验证图像的完整性,从而确保图像已经发布,并且在发布后未被修改。除了托管Docker容器映像之外,Azure容器注册表还支持OCI映像、OCI工件和Helm图表。

而在定价信息方面,微软公司使用分层系统的方式有所不同。

3.Docker Hub容器注册表

Docker Hub可能是当前最流行的容器注册表,因为它是默认的Docker存储库。它充当公共容器映像的市场,如果决定公开分发映像,它是最佳选择。有趣的是,Docker Hub的免费选项在一段时间内非常有吸引力,直到一些用户开始用来挖掘具有自动构建功能的加密货币。

因此,开发商对Docker的pull/push镜像设置了一些限制,并重新思考如何通过Docker Hub获利。用户需要了解有关速率限制更改的更多信息,以及向Docker Hub自动构建的转变。避免Docker的拉/取图像速率限制的一种方法是使用缓存代理。

在定价方面,层级系统允许用户通过付费计划解锁某些特定功能。但是,总体成本不会像使用AWS ECR或微软的Azure容器注册表(ACR) 等其他一些解决方案那样有效。

4.GitHub软件包注册表

2019年5月,GitHub推出了软件包注册解决方案。由于其解决方案的成功,他们在2020年9月发布了对容器镜像的支持,并首先作为测试选项。GitHub容器注册表的一个令人关注的方面是它提供了无缝体验,尤其是对开发人员而言。基本上,身份验证是使用个人访问令牌管理的。

另一种选择是使用公共存储库,尽管在这种情况下,企业需要其用户使用GitHub用户帐户进行身份验证。总体而言,GitHub软件包注册表肯定不是包含最多功能的容器注册表。但是,如果打算使用GitHub Actions,其定价更具竞争力,因为不需要为入口付费。

5.GitLab容器注册表

GitLab有自己的容器注册表,可以免费使用,并支持Docker容器映像以及Helm Chart(仍处于测试阶段)。如果使用GitLab的自托管版本或通过基于云的GitLab,它可以是自托管的。GitLab容器注册表的一大特色是它的清理策略,它可以删除匹配某个正则表达式模式的标签。

或者,用户可以尝试采用GitLab Package Registry,它也是免费的,并且支持Composer、Conan、Generic、Maven、npm、NuGet、PyPI和RubyGem。毫无疑问,如果已经将GitLab用于项目存储库,这是一个很好的选择。

6.谷歌容器注册表(GAR)

谷歌容器注册表(GAR)在以前是值得推荐的选项,但自从2021年夏季以来,谷歌公司一直要求他们的客户过渡到谷歌容器注册表(GAR),因为GCR只接收关键的安全修复程序。从本质上来说,GAR是他们处理容器镜像和非容器工件(例如Maven、npm、Python、Apt甚至Yum包)的新方法。

首先,GAR可以轻松地与持续集成(CI)/持续交付(CD)管道集成,以简化容器的构建和部署。此外,它还提供扫描图像中的漏洞,用户可以人工启用。

7.Harbor容器注册表

Harbour创建于2014年,并于2016年转为开源模型,并无疑是VMware公司最成功的开源项目之一。Harbor是一个容器注册表,需要用户自行安装、配置和管理。使用其Docker容器易于部署,可以将其与任何支持Docker的Linux发行版一起使用。需要注意的是,还可以在Kubernetes集群上使用Helm Chart部署Harbor。

Harbor容器注册表还支持希望从容器注册表中获得的大多数功能,例如:

  1. 漏洞扫描
    垃圾收集
    跨区域复制
    内容信任

总的来说,如果计划托管容器注册表,这是一个不错的选择。

8.Red Hat Quay

Quay最初创建于2012年,在过去几年中发生了重大变化。首先,这个容器注册表在2014年被CoreOS公司收购,后来在2018年被Red Hat收购。

而理解Quay、Project Quay或Red Hat Quay之间的区别可能会非常令人困惑。以下简要介绍每一项的含义:

Project Quay:它是一个独立容器注册表,是Red Hat Quay的开源发行版,可与Sonatype Nexus Repository OSS或Harbor相媲美。

Red Hat Quay.io:托管在Red Hat云平台上的企业解决方案,按私有存储库的数量定价。但是其公共存储库仍然是免费的。

Red Hat Quay:用于私有云部署的企业容器注册表,可以通过Red Hat OpenShift由内置运营者获得。
在本质上,Quay为不同的环境提供了多种产品,都具有丰富的功能,例如安全扫描(使用Clair)、存储库镜像、审计日志等。

9.Sonatype Nexus Repository OSS

与Harbor类似,Nexus Repository是另一种自托管容器注册表解决方案,也支持其他语言包。Sonatype有一个Docker映像,可在基础设施中轻松部署。这个容器注册表提供了它的Nexus Repository的专业版和一些额外的功能。

如果希望自托管包/容器注册表,这可能是一个不错的选择,因为它提供了涵盖许多场景的丰富文档。

9种容器注册表的比较

结论

总而言之,需要考虑的关键因素是网络就近部署,因为它对于在使用容器注册表时最大限度地降低成本和延迟至关重要。

最后,建议企业使用他们的云计算提供商提供的容器注册表。例如,如果其基础设施完全基于AWS云平台,建议使用AWS ECR。

这是因为所有云计算资源共享一个共同的身份验证模型,并且图像将被更快地提取,因为它们不需要从不同的云平台之间移动。

如何选择容器注册表?这里给出九个选项相关推荐

  1. 如何在Tanzu Cluster中使用vSphere with Tanzu内置容器注册表

    vSphere With Tanzu内置了容器注册表功能,只需要在Cluster的Namespace下enable此功能.有关开启和push/pull的内容请参考vSphere with K8S下使用 ...

  2. JCheckBox 默认选择_[注册表] 将Windows 10默认应用程序设置页面添加到桌面右键菜单中...

    从Windows 10初始版本开始微软就已调整默认程序配置策略,即强制用户设置关联的默认程序不允许软件设置.这也是很多用户经常在通知栏里看到某某文件格式被重置的原因,因为软件安装后设置的会被微软重置默 ...

  3. 通过注册表配置弹出窗口阻止程序

    转自:http://hejianlong.123.blog.163.com/blog/static/2671583920098411142467/ 注册表位置:[HKEY_CURRENT_USER\S ...

  4. 关于电脑注册表regedit自定义管理右键菜单选项实例(删除增加)

    前言:删除电脑多余右键菜单的具体操作 所有关于电脑的操作都可以通过修改注册表来实现.而随着电脑软件的安装,本就为方便人们操作的右键菜单变的愈来愈臃肿.但我们可以自定义管理大多数右键菜单,这篇帖子就是为 ...

  5. 通过注册表设置IE的ActiveX运行选项

    请尊重作者劳动成果,尊重版权.转载或转发帖请注明本链接地址 1:设置安全选项 IE设置的注册表项:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Curren ...

  6. 电脑服务器注册表,电脑注册表怎么清理 服务器安全狗清理注册表教程

    我们在安装一些软件的时候经常会增加一些注册表,有些软件还会修改我们系统本身的注册表,有时候卸载的时候卸载的不是很干净,久而久之注册表的垃圾文件就会越来越多,这个时候清理我们的电脑注册表就很有必要了,那 ...

  7. Windows注册表的基本知识及应用

    一.注册表的重要性 在DOS年代,对计算机的内存管理及系统配置主要通过AUTOEXEC.BAT和CONFIG.SYS来完成.从WINDOWS3.x开始,对系统的管理增加了大量的*.ini文件来登录软件 ...

  8. 10#Windows注册表的那些事儿

    引言 用了多年的Windows系统,其实并没有对Windows系统进行过深入的了解,也正是由于Windows系统不用深入了解就可以简单上手所以才有这么多人去使用.笔者是做软件开发的,使用的基本都是Wi ...

  9. K8s(Kubernetes), docker中的registry是什么意思?和windows中的注册表registry有什么区别?

    相信很多初学者会对K8s(Kubernetes)中的registry这个概念感到很困惑,因为翻译成中文实在是不好翻译,直译"注册"就让人觉得非常费解.网上对于这方面的中文资料也很少 ...

最新文章

  1. php发布商品信息逻辑,php – 逻辑思考一个数据库结构:为用户发布的东西添加“标签” – 一个单独的表或……?...
  2. 记录网页爬虫注意的几个问题
  3. 《商务旅行》解题报告
  4. 【深度学习】陶大程等人编写!最新41页深度学习理论综述
  5. 项目中的一个JQuery ajax实现案例
  6. 计算机基础- -操作系统环境
  7. 反应灵敏且性能卓越的Spray + Akka解决方案,以“在Java和Node.js中发挥并发性和性能”...
  8. Spring的@Transactional注解踩坑
  9. GitHub 撤销解雇犹太员工决定并公开致歉,涉事 HR 辞职
  10. Flutter 2019 产品路线图正式公布
  11. 多核Cache一致性 伪共享 atomic的实现和cache相关的部分
  12. 崩坏3区号+86_中国大陆国际区号是“ +86”,还是“ +086”、“ +0086”
  13. 装箱与拆箱(TDB)
  14. HTML5实现的树叶飘落动画特效
  15. 解决office关闭更新仍出现“可用的更新Office的更新已准备就绪,但我们首先需要关闭一些应用程序”的问题
  16. 货运从业资格证考试技巧
  17. 计算机专业英语完形填空,英语专业四级完形填空练习附答案
  18. java 下载txt文件(页面代码+Java后台代码+下载工具类)
  19. VirtualBox的虚拟机Ubuntu通过主机代理上网
  20. 迅如疾风 PHPWind 6.3.2 测试手记

热门文章

  1. CVPR 2020 | 利用强化学习进行交互式3D医学图像分割
  2. 程序员请收好:10个非常实用的 VS Code 插件
  3. IEEE向华为发出禁令,北大清华学者相继宣布退出IEEE!
  4. coverage代码覆盖率测试工具:基本原理分析与使用
  5. Ubuntu16.04默认安装了Python2.7和3.5 升级python3.5为3.6
  6. 为什么有的文件压缩的就很小,有的确实很大
  7. 网络工程师_记录的一些真题_2018上半年上午
  8. Linux CENTOS7 Linux ntopng流量监控、端口监控、服务监控管理系统 安装过程以及示例!另外附带CENTOS6的安装过程!
  9. 计算机网络拓扑结构 以下关于星型网络拓扑结构的描述正确的是______。 (多选题 )
  10. C语言字符串大小写转换_只愿与一人十指紧扣_新浪博客