什么是容器注册处?为什么我需要一个?
它们在任何成功的容器管理策略中都起着至关重要的作用。它们使开发人员更容易存储、管理和部署容器映像。它们无缝地集成到你的持续集成(CI)而且持续交付(CD)工作流。
容器注册表是推送和拉取映像的集中点。它们提供对容器映像和一系列其他内置功能的可靠、一致和高效的访问。
在本指南中,您将了解不同类型的容器注册表、维护您自己的注册表的重要管理步骤以及有助于确保映像安全性和完整性的注册表功能。
什么是容器注册处?
容器注册中心是存储位置的目录,您可以在其中推拉容器映像。
然而,存储图像的实际物理位置被称为存储库.每个存储库存储具有相同名称的相关映像集合。
存储库中的每个映像都表示同一容器部署的不同版本。例如,在流行的容器注册中心Docker Hub上,nginx是用于开源web服务器安装NGINX的包含不同版本Docker镜像的存储库的名称。
一个特定的图像通过它的标记或它自己的唯一引用来标识。
容器注册表的三种主要类型如下。
码头工人中心
Docker自己的官方图像资源对于容器注册表新手来说是一个快速而简单的起点。
它提供了超过10万张现成的图片,由软件供应商、开源项目和Docker的用户社区共享。这些包括各种各样的操作系统、应用程序框架、数据库管理系统和DevOps工具,用于立即部署或作为您自己的父映像使用。
除了免费访问其公开可用的存储库外,Docker Hub还提供了供您私人使用的付费容器注册服务。
自托管登记
自托管注册中心是一种更高级的解决方案,适用于那些喜欢在自己的本地基础设施上托管容器映像的组织——通常是因为安全性、合规性或较低的延迟需求。
自托管模型使您可以完全控制如何管理映像。但是,要运行您自己的自托管注册表,您需要实现一个注册表服务器解决方案,例如Docker可信注册表,港而且港口,需要复杂的设置和持续的运营管理。
第三方注册服务
第三方注册中心服务是完全受管理的产品,它还使您能够控制如何管理映像——但没有运行自己的本地注册中心的操作问题。
更重要的是,他们提供更先进的功能,这可以帮助保持您的图像库存安全。
第三方注册中心服务包括亚马逊ECR,Azure容器注册中心而且谷歌集装箱注册处,面向公共云,以及混合云解决方案,如GitLab容器注册和JFrog自己的容器注册服务.
注册表管理
容器映像由一系列中间映像组成,称为层,它将配置一个完全可运行的容器环境所需的所有安装、依赖项、进程和应用程序代码打包。
容器注册中心通过共享多个映像共用的任何层来有效地利用存储空间。
然而,您的注册中心可能很快就会失去控制,因为它积累了大量您不再需要的映像。
这些通常包括测试的图片,开发人员已经忘记删除,以及孤儿图像-容器的图片由于将修改后的图像推到具有相同标记的相同存储库,因此已经取消了标记。
因此,为了将注册表的大小控制在可管理的范围内,您应该定期清理映像。
您通常可以通过指定图像的标记、时间戳或图像自己的唯一引用(称为)来删除单个图像消化.或者,您也可以删除整个存储库。
删除映像时,注册表服务器将清除该映像特有的所有层以及引用它的所有标记。
注册安全
唯一校验和引用
除了组成映像构建的层之外,每个容器映像还包括一个清单.这本质上是对图像的描述JSON格式,包含关于映像的信息,例如标签和关于如何为不同类型的主机平台配置容器的详细信息。
容器映像的摘要就是sha - 256清单的散列。这确保了每个图像都有唯一的参考。因此,如果有人篡改了您的图像,即使他们使用相同的图像标记,摘要也会改变。
因此,如果通过摘要提取图像,可以保证图像的版本相同,并避免潜在的安全问题。
一个用于Alpine latest标记的Docker Hub清单,显示了每个图像的简短摘要
安全工具
使用公共注册中心(如Docker Hub),您必须信任可能不会保持高安全性标准的图像发布者。因此,图像可能包含恶意或过时的代码。不仅如此,这样的注册中心只支持基本的安全工具。
另一方面,第三方注册中心服务倾向于提供广泛的内置功能,这可以帮助保持映像的安全。
这些通常包括:
- 图像扫描以识别妥协和未修补的漏洞。
- 严格的治理,例如基于角色的访问控制(RBAC)和遵从性监视。
- 数字签名、图像验证和其他篡改保护功能。
- 用于开发、测试和生产的隔离注册中心。
类似的工具也可用于自托管的注册中心,但通常需要安装外部软件解决方案。
