容器概念

借助 Artifact Registry,您可以将容器映像和其他制品存储在制品库中并进行整理,以便跨环境管理和部署工作负载。您可以使用映像层、标记和清单摘要来控制映像版本控制并管理部署。

此页面中的 Artifact Registry 示例主要指的是 Docker 格式的制品库。如需了解详情,请参阅支持的格式和代码库概览。

注册表

注册表用于存储和分发容器映像和工件,这些映像和工件按名称整理在代码库中。注册表可以包含单个代码库或多个代码库,并且可以是公开的,也可以是私密的。

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 特定的标记和清单,请参阅管理映像和使用容器映像。

映像预热

对于使用映像流式传输的延迟时间敏感型应用,在新节点或实例上首次等待拉取映像(通常称为“冷启动”)可能会导致不必要的延迟。借助预热,您可以在请求映像之前,明确开始将映像下载到映像流式传输缓存中。此流程有助于确保您的映像在 GKE 集群请求时可快速交付。

如需预热映像,请使用 Artifact Registry API。如需查看相关说明,请参阅通过映像预热缩短延迟时间。

后续步骤