什么是集装箱注册中心?为什么我需要一个?

爱德华Kisller
2022-02-02 14:26

用户添加图片

它们在任何成功的集装箱管理策略中都起着至关重要的作用。它们使开发人员更容易存储、管理和部署容器映像。它们会无缝地融入你的持续集成(CI)而且持续交付(CD)工作流。

容器注册中心是推和拉映像的中心点。它们提供对容器映像和一系列其他内置功能的可靠、一致和高效的访问。

在本指南中,您将了解不同类型的容器注册表、维护自己的注册表和有助于确保映像安全和完整性的注册表功能的重要管理步骤。

什么是集装箱注册中心?

容器注册表是存储位置的目录,您可以在其中推送和拖动容器映像。

然而,存储图像的实际物理位置称为存储库.每个存储库都存储具有相同名称的相关图像集合。

存储库中的每个映像表示同一容器部署的不同版本。例如,在流行的容器注册表上码头工人中心nginx是包含不同版本的Docker镜像库的名称,用于开源web服务器安装NGINX。

一个特定的图像可以通过它的标签或它自己的唯一引用来识别。

容器注册表的三种主要类型如下所示。

码头工人中心

Docker自己的官方图像资源对于那些容器注册新手来说是一个快速而简单的起点。

它提供了10万多张现成的图片,由软件供应商、开源项目和Docker的用户社区共享。这些包括各种各样的操作系统、应用程序框架、数据库管理系统和DevOps工具,用于立即部署或作为您自己的父映像使用。

除了免费访问其公开可用的存储库之外,Docker Hub还提供了供您私人使用的付费容器注册服务。

自托管登记

对于喜欢将容器映像托管在自己的本地基础设施上的组织来说,自托管注册中心是一种更高级的解决方案——通常是因为安全性、遵从性或较低的延迟需求。

自托管模型使您可以完全控制如何管理映像。但是,要运行自己的自托管注册中心,需要实现注册中心服务器解决方案,例如码头工人可信赖的注册表而且港口,需要复杂的设置和持续的运营管理。

第三方注册服务

第三方注册中心服务是完全受管理的产品,它还允许您控制如何管理映像——但无需运行自己的本地注册中心的操作问题。

更重要的是,它们提供了更高级的功能,可以帮助保持您的图像库的安全。

第三方注册中心服务包括亚马逊ECRAzure容器注册表而且谷歌容器注册表,它们面向公共云,以及混合云解决方案,如GitLab容器注册表和JFrog自己的容器注册表服务

注册表管理

容器图像由一系列中间图像组成,称为,将所有安装、依赖项、流程和应用程序代码打包,以配置一个完全可操作的容器环境。

容器注册中心通过共享多个映像共用的任何层来有效地利用存储空间。

用户添加图片
然而,注册表可能会迅速增长,失去控制,因为它会积累大量您不再需要的映像。

这些通常包括测试的图片,开发人员已经忘记删除,以及孤儿图像-容器的图片由于使用相同的标签将修改过的图像推入相同的存储库,因此未被标记。

因此,为了将注册表的大小控制在可管理的范围内,您应该定期清理映像。

通常可以通过指定单个图像的标记、时间戳或图像自身的唯一引用(称为消化.或者,也可以删除整个存储库。

删除映像时,注册表服务器会清除该映像的所有惟一层和引用该映像的所有标记。

注册安全

独特的校验和引用

除了组成映像构建的层之外,每个容器映像还包括一个清单.这本质上是对图像的描述JSON格式,包含关于该映像的信息,如标记和关于如何为不同类型的主机平台配置容器的详细信息。

容器映像的摘要是简单的sha - 256清单的散列。这确保了每个图像都有一个唯一的参考。因此,如果有人篡改了您的图像,即使他们使用相同的图像标记,摘要也会改变。

因此,如果通过摘要提取图像,就可以保证图像的版本相同,并避免潜在的安全问题。

用户添加图片

一个用于Alpine最新标签的Docker Hub清单,显示每张图像的缩写摘要

安全工具

使用公共注册中心,如Docker Hub,您必须信任映像发布者,他们可能不会维护高标准的安全性。因此,图像可能包含恶意的或过时的代码。不仅如此,这样的注册中心只支持基本的安全工具。

另一方面,第三方注册中心服务倾向于提供广泛的内置功能,这可以帮助保持映像的安全。

这些通常包括:

  • 图像扫描,以识别妥协和未修补的漏洞。
  • 严格的治理,例如基于角色的访问控制(RBAC)和遵从性监视。
  • 数字签名,图像认证和其他篡改保护功能。
  • 用于开发、测试和生产的独立注册中心。

在自托管注册中心上也可以使用类似的工具,但通常需要安装外部软件解决方案。

了解更多关于容器的信息