本文档介绍了与容器映像相关的关键概念,包括注册表、代码库和工件。此外,还包含一些基本信息,介绍这些概念如何应用于 Artifact Registry 和 Container Registry。
本页中的 Artifact Registry 示例主要涉及 Docker 格式和 gcr.io
代码库。如需了解详情,请参阅支持的格式和代码库概览。
注册表
注册表存储和分发按名称整理在代码库中的容器映像和工件。注册库可以包含一个或多个代码库,并且可以是公共的或私有的。
Docker Hub 和 Artifact Registry 等注册表服务提供了创建公共或私有代码库的选项。提取公共映像时,请务必了解可能存在的安全问题。如需详细了解漏洞监控和减少依赖项占用空间,请参阅依赖项管理。
注册表会整理为存储各个容器映像的代码库。借助 Artifact Registry,您可以在单个项目中创建多个代码库,并将某个特定区域或多区域位置与每个代码库相关联。相关代码库可以按标签进行分组。Artifact Registry 代码库和映像管理
在 Artifact Registry Docker 格式代码库中,您可以在同一个代码库中存储多个不同名称的容器映像。映像的每个版本都由其映像摘要标识,并且可以与标记相关联。标记可以是可变的,也可以是不可变的。如需详细了解容器映像版本和标记,请参阅容器映像版本。
Artifact Registry 通常是指映像路径的部分,用于标识项目、单区域或多区域位置、映像名称以及标记或清单摘要,以便标识正确的版本。例如:
docker push us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
us-west1
是代码库的位置docker.pkg.dev
是 Docker 格式代码库的主机名。PROJECT
是您的Google Cloud 项目 ID 创建的命名空间。quickstart-docker-repo
是您在项目下存储图片的命名空间。在 Artifact Registry 中,路径的此部分称为代码库。quickstart-image
是所有版本quickstart-image
的名称,通常称为映像。tag1
是用于指定映像版本的标记。
图片
工件和映像都可以存储在 Artifact Registry 中。工件可以是任何内容:文本文件、Docker 映像或 Helm 图表,而映像通常是指容器映像。容器映像是包含在任何环境中运行所需的所有元素的软件包。如需了解详情,请参阅什么是容器。
映像会推送或上传到代码库,并从代码库拉取或下载。为了指定正确的映像和版本,必须指定唯一的注册表和工件。
如需详细了解 Artifact Registry 中的代码库和映像名称,请参阅代码库和映像名称。
层
存储在代码库中的容器映像是使用层逐渐构建的。不同的图片可以使用部分相同的图层。图层的定义方式因图片类型而异。例如,Dockerfile 中的每条指令都对应于 Docker 映像中的一层。在注册表中,具有通用层的映像会共享这些层,从而提高存储效率。出于安全考虑,不同注册库之间不会共享图层。
删除容器映像后,层不会立即删除。注册库中的任何图片都未引用的图层会每天删除。
标记
用户在将映像推送或拉取到代码库时添加标记,以指定映像的版本。图片可以有一个或多个标记,也可以没有任何标记。如果您使用可变标记,并使用相同的标记推送了两次映像,则系统会从第一个映像中移除该标记并将其移至第二个映像,第一个映像将没有标记。您仍然可以使用清单摘要访问未加标签的映像。
如果您使用的是不可变代码,则不允许执行以下操作:
- 删除带链接的图片。您仍然可以删除未添加链接的图片。
- 从图片中移除链接。
- 推送的映像使用了仓库中另一个映像版本已使用的标记。
latest
标记是在推送不带标记的映像时附加的特殊标记。
例如:
docker push us-west1-docker.pkg.dev/my-project/my-repo/hello-app
将映像推送到 hello-app:latest
docker pull us-west1-docker.pkg.dev/my-project/my-repo/hello-app
拉取映像 hello-app:latest
。
请务必注意,当映像推送到标记为 latest
以外的代码库时,系统不会添加 latest
标记,因此 latest
映像可能滞后于最新的更改。我们建议为版本使用 latest
以外的标记。
清单
图片清单用于唯一标识和指定每个图片中的图层。清单由称为清单摘要的唯一 SHA-256 哈希标识。清单摘要比标记更可靠、更安全,因为在使用可变标记的代码库中,可以将同一映像的多个版本推送到同一标记,导致某些映像没有标记,而每个映像都由其清单摘要进行唯一指定。
如果您使用工具扫描或分析图片,由这些工具生成的结果将仅对扫描的图片有效。为了确保您部署已经过扫描的映像,您无法依赖标记,因为该标记引用的映像可能会更改。
如需详细了解 Artifact Registry 专用标记和清单,请参阅管理映像和使用容器映像。
后续步骤
- Docker 快速入门
- 使用容器映像
- Helm 快速入门
- 使用 Helm 图表
- 了解 DevOps 并探索 DORA 研究项目。