当前位置: 首页 > 科技观察

如何选择容器注册中心,这里有九种选择

时间:2023-03-17 15:44:16 科技观察

2013年诞生的开源Docker引擎让容器化成为云应用开发流程现代化的第一步。在Docker引擎之前,用户必须为特定的计算机/硬件配置应用程序。但这种方法的缺点是将应用程序和数据从一台服务器移动到另一台服务器可能很耗时。然而,随着DockerRegistry的推出,管理和组织容器注册表的长期挑战已经得到解决。事实上,DockerRegistry很快成为了软件行业的标准。如今,DockerRegistry帮助许多企业在软件开发过程的不同阶段在一个中央位置收集、存储和交付容器镜像。本文概述了人们需要了解的容器注册表的核心功能,以帮助他们选择适合其软件开发需求的正确容器注册表。什么是容器注册表?容器注册表是一种高度可扩展的服务器端应用程序,允许持续集成(CI)/持续交付(CD)系统、开发人员和测试人员存储在应用程序开发期间创建的图像。存储在容器注册表中的图像用于Kubernetes、DevOps和基于容器的应用程序开发。示例包括DockerHub、AmazonECR和Azure。如何选择合适的容器注册中心?在选择容器注册表时,市场上并不缺少一些教学选项,这些选项会使选择正确的容器注册表成为一项艰巨的任务。但是,在用户开始选择之前,有一个核心问题需要考虑:除了容器镜像之外,你还想托管其他工件吗?一些容器注册表支持其他类型的文件,例如Java、Node.js甚至Python包。另一方面,有些只支持容器镜像。需要额外的安全保障?只有少数容器注册表提供更高的安全性,每次用户将图像推送到注册表时都会执行漏洞扫描。应该使用本地还是托管容器注册表?如果用户决定从一个容器迁移到另一个容器,则任务相对容易。有哪些可用的容器注册表?1.AWSElasticContainerRegistry(AWSECR)AWSECR可以配置为支持私有和公共Docker注册表。这些注册表可与AWSIAM一起使用,以控制用户、服务和应用程序的访问级别。本质上,可以定义哪些用户可以访问受保护的容器镜像。AWSECR还配备了漏洞图像扫描,使其成为DevSecOps的必备功能。这是因为它使用Clair的常见漏洞和披露(CVE)数据库来评估它发现的问题的严重性。AWSECR的另一个重要特性是不可变的图像标签。启用后,此功能可确保在将映像推送到容器注册表后,任何人都无法覆盖该映像。2.AzureContainerRegistry(ACR)微软的AzureContainerRegistry基于DockerRegistry2.0,其中认证由AzureRBAC管理。Azure的ContainerRegistry具有大多数竞争对手尚未提供的功能,例如旧图像的自动清理。无标签列表的保留政策。内容信任。请务必注意,ContentTrust基于Docker创建的概念,允许用户对推送到Azure容器注册表的图像进行签名。本质上,可能使用图像的应用程序/用户将其客户端配置为仅拉取签名图像。同时Docker客户端可以验证镜像的完整性,从而保证镜像已经发布并且发布后没有被修改。除了托管Docker容器映像外,Azure容器注册表还支持OCI映像、OCI工件和Helm图表。在定价信息方面,Microsoft使用不同的分层系统。3.DockerHub容器注册表DockerHub可能是最流行的容器注册表,因为它是默认的Docker存储库。它充当公共容器镜像的市场,如果您决定公开分发镜像,它是最佳选择。有趣的是,DockerHub的免费选项在一段时间内非常有吸引力,直到一些用户开始使用它来通过自动构建来挖掘加密货币。因此,开发者对Docker的pull/push镜像设置了一些限制,重新思考如何将DockerHub变现。用户需要了解更多关于速率限制的变化,以及向DockerHub自动构建的转变。避免Docker的拉取/获取图像速率限制的一种方法是使用缓存代理。在定价方面,等级系统允许用户通过付费计划解锁某些功能。但是,总体成本不会像使用AWSECR或Microsoft的Azure容器注册表(ACR)等其他一些解决方案那样高效。4.GitHubPackageRegistry2019年5月,GitHub推出了包注册解决方案。由于他们的解决方案取得了成功,他们于2020年9月发布了对容器镜像的支持,首先作为测试选项。GitHubContainerRegistry的一个有趣方面是它提供了一种无缝体验,尤其是对于开发人员而言。基本上,身份验证是使用个人访问令牌来管理的。另一种选择是使用公共存储库,尽管在这种情况下,企业要求其用户使用GitHub用户帐户进行身份验证。总的来说,GitHubPackageRegistry肯定不是功能最丰富的容器注册表。但是,如果您打算使用GitHubActions,它的定价更具竞争力,因为无需支付入门费。5.GitLab容器注册表GitLab有自己的容器注册表,可以免费使用并支持Docker容器镜像以及HelmChart(仍处于测试阶段)。如果使用自托管版本的GitLab或通过基于云的GitLab,它可以自托管。GitLabContainerRegistry的一大特色是它的清理策略,它会删除与特定正则表达式模式匹配的标签。或者,用户可以尝试GitLabPackageRegistry,它也是免费的,支持Composer、Conan、Generic、Maven、npm、NuGet、PyPI和RubyGem。毫无疑问,如果您已经将GitLab用于您的项目存储库,这是一个很好的选择。6.GoogleContainerRegistry(GAR)GoogleContainerRegistry(GAR)以前是一个推荐的选项,但自2021年夏季以来,Google一直要求其客户过渡到GoogleContainerRegistry(GAR),因为GCR仅接收关键的安全修复程序。从本质上讲,GAR是他们处理容器镜像和非容器工件(如Maven、npm、Python、Apt甚至Yum包)的新方法。首先,GAR可以轻松与持续集成(CI)/持续交付(CD)管道集成,以简化容器的构建和部署。此外,它还提供用户可以手动启用的漏洞的扫描图像。7.Harbor容器注册中心Harbor创建于2014年,2016年转为开源模式,无疑是VMware最成功的开源项目之一。Harbor是一个容器注册中心,需要由用户安装、配置和管理。使用它的Docker容器很容易部署,您可以将它与任何支持Docker的Linux发行版一起使用。需要注意的是,您也可以使用HelmChart在Kubernetes集群上部署Harbor。HarborContainerRegistry还支持您期望从容器注册表获得的大部分功能,例如:漏洞扫描垃圾收集跨区域复制内容信任总的来说,如果您计划托管容器注册表,这是一个不错的选择。8.RedHatQuayQuay最初创建于2012年,在过去几年中发生了重大变化。首先,这个容器注册表在2014年被CoreOS收购,随后在2018年被RedHat收购。理解Quay、ProjectQuay或RedHatQuay之间的区别可能会让人非常困惑。下面简单介绍一下各自的含义:ProjectQuay:它是一个独立的容器注册表,是RedHatQuay的开源发行版,可与SonatypeNexusRepositoryOSS或Harbor相媲美。RedHatQuay.io:托管在RedHatCloudPlatform上的企业解决方案,按私有存储库的数量定价。但是它的公共存储库仍然是免费的。RedHatQuay:用于私有云部署的企业容器注册表,可通过RedHatOpenShift从内置操作员处获得。本质上,Quay提供了多种针对不同环境的产品,都具有丰富的功能,如安全扫描(使用Clair)、存储库镜像、审计日志等。9.SonatypeNexusRepositoryOSS与Harbor类似,NexusRepository是另一个自托管的还支持其他语言包的容器注册表解决方案。Sonatype有一个Docker镜像,可以在基础设施中轻松部署。该容器注册表提供了具有一些额外功能的专业版Nexus存储库。如果希望自行托管包/容器注册表,这可能是一个不错的选择,因为它提供了涵盖许多场景的大量文档。9个容器注册中心的比较结论总之,要考虑的关键因素是网络邻近性,因为在使用容器注册中心时,它对于最小化成本和延迟至关重要。最后,建议企业使用云计算提供商提供的容器注册中心。比如它的基础设施完全基于AWS云平台,推荐使用AWSECR。这是因为所有的云计算资源共享一个通用的身份验证模型,并且图像将被更快地拉取,因为它们不需要在不同的云之间移动。原标题:如何选择容器注册表:FlorianPialoux的9大精选