ARTIFACTORY:比较Docker Hub和GitHub容器注册表

JFrog支持
2023-01-22 11:06

如果您使用容器创建或部署应用程序,您可能已经知道为什么应该使用容器注册中心:它们使系统地存储和共享容器映像变得容易。

然而,围绕容器注册中心的许多团队面临的挑战是决定使用哪一个。如今可用的注册中心太多了,很难决定哪个注册中心的特性、部署架构和(如果适用的话)定价模型最适合您的需求。

为了在这方面提供指导,本文比较了两种流行的容器注册表:码头工人中心和GitHub容器注册表。我们将详细介绍这些选项的主要优点和缺点,并解释为什么要使用其中一种、另一种或两者都不使用来管理容器映像。

Docker Hub的优点和缺点

Docker Hub是许多人遇到的第一个容器注册表。Docker Hub不仅是当今使用最广泛的容器注册表,而且也是许多主流容器管理工具的“默认”注册表。例如,如果您使用Docker CLI工具或Kubernetes部署容器,您会发现它们默认情况下被配置为从Docker Hub下载映像,除非您指定了替代注册表。

Docker Hub的优势

这种与Docker和Kubernetes的深度集成是Docker Hub的主要优势之一。这意味着使用Docker Hub作为容器映像管理解决方案基本上不需要任何设置——至少如果您可以使用公共存储库管理容器映像的话。

如果你想为Docker或Kubernetes建立私有的Docker Hub存储库(也就是公众无法访问的存储库),你需要做一些额外的工作;例如,在Kubernetes中,你必须配置机密才能访问私有存储库。但是总体来说,配置过程仍然比集成另一个注册中心简单。

事实上,Docker Hub是一个完全托管的注册中心也是一个优势。用户不需要设置任何基础设施或部署任何注册表软件就可以使用Docker Hub。

最后,Docker Hub的集成安全扫描器是一个优点。Docker Hub会自动扫描容器映像以查找安全漏洞,而且是免费的。

Docker Hub的缺点

Docker Hub的主要缺点可以归结为有限的功能和配置选项。

例如,Docker Hub的一个主要限制是缺乏真正细粒度的访问控制。虽然可以使用Docker Hub的团队和组织特性来定义存储库的访问权限,您不能在逐个映像的基础上管理访问控制(除非为每个映像创建不同的存储库,这很难管理)。

Docker Hub还提供了用于查看使用信息的有限功能。您可以获得基本的统计信息,例如下载映像的总次数。但是Docker Hub不提供生成关于映像或存储库使用情况的非常详细的信息的能力。

Docker Hub的最后一个关键限制是Docker在2020年引入的限制在Docker Hub的免费计划下,图像可以存储多长时间以及多久可以下载一次。如果您需要一个支持大容量使用的注册表,Docker Hub的免费产品就不再有效了,因为在免费计划下,您每6小时只能下载200次。

GitHub容器注册表的利弊

GitHub主要是一个管理源代码的平台,最初并不是容器注册表领域的有力竞争者。这种情况随着GitHub容器注册表的介绍作为2020年的延伸GitHub包.虽然最初发布的是测试版产品,GitHub的注册表进入一般可用性在2021年代中期。

GitHub容器注册的优势

可能使用GitHub容器注册表的最大优势是它与GitHub紧密集成。如果你已经使用GitHub管理应用程序的源代码,你可以轻松地将这些应用程序打包为容器映像,并将映像托管在GitHub的注册表中,而无需设置任何特殊的集成或工具。你需要的一切都已经内置在GitHub中。

GitHub Container Registry还提供了比Docker Hub更细粒度的访问控制的优势。你可以管理访问权限在每张图片的基础上。

事实上,GitHub容器注册表提供了无限数量的私有存储库也是一个优势。在Docker Hub上,在免费计划下,您只能使用一个私有存储库。

此外,GitHub容器注册表提供了更慷慨的镜像存储和下载条款在它的自由计划下;例如,对于容器映像的下载频率没有限制(尽管免费计划的数据传输总量上限为每月1gb)。

GitHub容器注册表的缺点

GitHub容器注册表的最大优势——它与GitHub的集成——也可能被认为是一个缺点,从某种意义上说,这意味着你必须使用GitHub才能使用GitHub容器注册表。

虽然如果你足够努力,你可能会建立一个复杂的管道,将代码从第三方平台推送到GitHub容器注册表中,但注册表实际上只是设计用于与GitHub源代码存储库结合使用。因此,如果你把你的代码托管在其他地方(如GitLab或你自己的Git服务器上),GitHub容器注册表不是一个很好的选择。

事实上,GitHub容器注册表在默认情况下没有集成到Docker或Kubernetes中,这也是相对于Docker Hub的一个缺点。也就是说,将一个部署环境连接到GitHub容器注册表并不是特别困难(它并不比集成任何其他类型的注册表(除了Docker Hub)更困难)。

GitHub容器注册表的使用统计信息也可能被认为是一个缺点。尽管你可以查看基本使用信息,你不能从Docker Hub获得更多的细节。

选择正确的容器注册表

虽然Docker Hub在默认情况下提供了大量流行集成到Docker和Kubernetes的关键优势,但GitHub Container Registry在其免费定价计划中脱颖而出,因为其更精细的访问控制和更慷慨的条款。

比较图

码头工人中心 GitHub容器注册
使用的限制 200次下载/6小时免费计划 1gb /月的免费计划
支持私有存储库或映像? 是的(但免费计划下只有1个私有存储库) 可以(没有限制)
访问控制限制 仅限于存储库 无主要限制
托管模式 完全托管的SaaS服务 完全托管的SaaS服务
取决于其他平台/工具? 没有 是的(必须使用GitHub)
使用情况统计 基本 基本

请记住,这两个容器注册中心并不是唯一的选择。如果你需要Docker Hub和GitHub容器注册表都没有的功能——比如支持在你自己的基础设施上运行注册表,或者能够管理所有类型的工件,而不仅仅是容器映像——可以考虑这样的选项JFrog Artifactory