从 Container Registry 转换

Container Registry 已弃用,并将按计划关停。2024 年 5 月 15 日之后,Artifact Registry 将在之前未使用 Container Registry 的 Google Cloud 项目中托管 gcr.io 网域的映像。2025 年 3 月 18 日之后,Container Registry 将关停。

如需详细了解弃用和关停时间表,请参阅 Container Registry 弃用为 Container Registry 关停做好准备

Artifact Registry 是推荐用于在 Google Cloud 上存储和管理容器映像的服务。Artifact Registry 提供与 Container Registry 相同的容器管理功能,并包含额外的功能和优势。作为一项同时支持容器映像和非容器工件的全代管式服务,Artifact Registry 扩展了 Container Registry 的功能。

新功能摘要

Artifact Registry 通过以下功能扩展了 Container Registry 的功能:

如需详细了解这些功能,请参阅功能比较

mirror.gcr.io 上缓存的 Docker Hub 映像

Artifact Registry 将经常访问的公共 Docker Hub 映像缓存在 mirror.gcr.io 上。如需详细了解如何使用 mirror.gcr.io,请参阅拉取缓存的 Docker Hub 映像

选择转换选项

您可以使用两种类型的代码库过渡到 Artifact Registry:

支持 gcr.io 网域的代码库

映射到 Container Registry gcr.io 主机名的特殊代码库。Artifact Registry 可以将针对 Container Registry 主机的 gcr.io 请求重定向到同一 Google Cloud 项目中的相应 Artifact Registry 代码库。

在以下情况下,请使用此选项:

  • 您希望尽量减少将现有映像和自动化功能转换为 Artifact Registry 所需的设置和配置量。
  • 您无需在其他 Google Cloud 项目或区域中设置 Artifact Registry 代码库。
标准代码库

常规 Artifact Registry 代码库,支持所有功能并且完全独立于任何现有的 Container Registry 主机。

在以下情况下,请改用标准代码库:

  • 您需要满足合规性要求,才能将数据存储在特定区域。支持 gcr.io 网域的代码库只能在与 Container Registry 主机相同的多区域位置使用:asiaeuus
  • 您希望在不同于目前使用 Container Registry 的项目的其他项目中设置 Artifact Registry 代码库。
  • 您想重新设计存储图片的方式和位置。例如:

    • 在与其他 Google Cloud 区域级资源(包括 Cloud Run 和 Google Kubernetes Engine 等运行时)相同的区域中创建代码库。
    • 在距离您的团队较近的区域中设置代码库。例如,您可以在澳大利亚区域(而不是 asia 多区域)创建代码库,或者在南美区域(而不是 us 多区域)创建代码库。
    • 使用不同的 Identity and Access Management 政策在同一项目和位置创建多个 Docker 代码库。例如,您可以在 us-east1 区域中设置开发和生产代码库,为开发者提供不同级别的访问权限。
  • 创建虚拟代码库,充当从多个上游标准代码库进行下载的单个端点。

这两种类型的代码库可以共存。例如,您可以在 Artifact Registry 中创建 gcr.io 代码库以转换现有的 Container Registry 设置并为新工作创建标准代码库。

使用我们的过渡工具

您可以使用以下工具找出使用了 Container Registry 的项目,将映像从 Container Registry 复制到 Artifact Registry,以及自动将多个项目从 Container Registry 迁移到 Artifact Registry。

  • 检查 Container Registry 使用情况
  • 使用我们的迁移工具将项目从 Container Registry 迁移到 Artifact Registry,复制映像,并选择您偏好的过渡代码库类型。
  • 使用自动迁移工具、gcrane、Docker 或 gcloud CLI 将映像从 Container Registry 复制到 Artifact Registry。

特性比较

下表总结了 Container Registry 和 Artifact Registry 之间的区别。

特征 Container Registry Artifact Registry
支持的格式 仅限容器映像 多种工件格式,包括容器映像、语言软件包和操作系统软件包。
域名 gcr.io pkg.dev

如果您已设置 gcr.io 网域支持,Artifact Registry 还可以为 gcr.io 网域存储映像。

仓库模式 不适用
  • Standard:存储工件。
  • 远程:缓存从 Docker Hub 等上游来源请求的工件。
  • 虚拟:单个端点,多个上游仓库。
注册表创建 您可以通过将第一个映像推送到注册表主机来创建该主机。

Container Registry 将映像存储在 Google Cloud 项目的 Cloud Storage 存储桶中,并且必须直接对存储桶执行授予注册表专属权限等操作。

创建代码库是一项不同于推送和拉取的操作,可明确区分代码库管理与代码库使用情况。
  • 为了实现向后兼容,您可以设置 gcr.io 网域支持。初始设置包括为项目中的每个 Container Registry 主机自动创建 Artifact Registry 代码库,以及将 gcr.io 重定向到相应的 Artifact Registry 代码库。
  • 对于发送到 pkg.dev 网域的所有推送和拉取请求,相应代码库必须已存在。

在 Artifact Registry 中,Google Cloud 项目中没有需要管理的 Cloud Storage 存储分区。您可以直接对代码库执行映像管理操作。

注册表位置 一个 Google Cloud 项目中只能使用四个多区域注册表主机。 在单区域或多区域中创建多个单独控制的代码库。
访问权限控制
  • 使用 Cloud Storage 角色授予访问权限。
  • 您可以允许仅访问存储在多区域位置(而非各个代码库)中的所有映像。例如,您可以允许仅访问项目 my-project 中的 us.gcr.io,但不能向 us.gcr.io/my-project/team1us.gcr.io/my-project/team2 下的映像授予特定权限
Authentication 提供多种身份验证方法,让您能够通过第三方客户端推送和拉取映像。 Artifact Registry 支持与 Container Registry 相同的身份验证方法。如需了解详情,请参阅为 Docker 设置身份验证
客户管理的加密密钥 (CMEK) 使用 CMEK 加密包含映像的存储分区。 使用 CMEK 加密各个代码库。
使用 Google Cloud 控制台 在 Google Cloud 控制台的 Container Registry 部分查看和管理 Container Registry 映像。 在 Google Cloud 控制台的 Artifact Registry 部分查看您的 Artifact Registry 和 Container Registry 代码库列表。通过此页面可管理您的 Artifact Registry 代码库和映像。

如果点击 Container Registry 代码库,系统会将您定向到 Google Cloud 控制台 Container Registry 部分中的映像列表。

使用 gcloud CLI 和 API 命令 使用 gcloud container images 命令。命令支持缩短的摘要。如果您未指定完整的摘要字符串,Container Registry 会尝试根据部分字符串找到正确的映像。

Container Registry 没有 REST 或 RPC API。

使用 gcloud artifacts docker 命令。命令不支持缩短摘要。

如需查看 Container Registry 和 Artifact Registry gcloud CLI 命令之间的比较,请参阅 gcloud CLI 命令比较

Artifact Registry 提供用于管理代码库和工件的 REST 和 RPC API。

Pub/Sub 通知 发布对 gcr 主题的更改。 发布对 gcr 主题的更改。如果您在现有 Container Registry 服务所在的项目中创建代码库,则现有的 Pub/Sub 配置会自动运行。

如需了解详情,请参阅配置 Pub/Sub 通知

审核日志记录 Container Registry 不提供注册表活动的审核日志。 使用 Cloud Logging 跟踪对代码库的更改。
缓存的 Docker Hub 映像 mirror.gcr.io 是一种拉取缓存,可存储所有用户最常请求的 Docker Hub 映像。mirror.gcr.io 现在托管在 Artifact Registry 上。 mirror.gcr.io 现在托管在 Artifact Registry 上。除非您在 VPC Service Controls 边界中使用 mirror.gcr.io,否则无需执行任何操作。如需详细了解如何在 VPC Service Controls 边界中使用 mirror.gcr.io,请参阅将 Artifact Registry 与 VPC Service Controls 配合使用
VPC Service Controls 您可以向服务边界添加 Container Registry 您可以向服务边界添加 Artifact Registry
使用 Artifact Analysis 进行元数据存储和分析 在具有受支持操作系统的映像中通过按需扫描扫描操作系统和语言包漏洞。自动扫描只会返回操作系统漏洞信息。详细了解扫描类型
按需扫描
自动扫描
  • Google Cloud CLI 命令 gcloud container images 包含用于查看扫描结果(包括漏洞和其他元数据)的标志。
  • 扫描操作仅会为 Container Registry 中采用 受支持的操作系统的映像返回操作系统漏洞信息。
通过按需扫描和自动扫描,扫描操作系统和语言包漏洞。详细了解扫描类型
按需扫描
自动扫描
  • Google Cloud CLI 命令 gcloudartifact docker images 包含用于查看扫描结果(包括漏洞和其他元数据)的标志。
  • 扫描会返回包含 受支持操作系统的 Artifact Registry 映像的操作系统漏洞信息,以及受支持和不受支持的操作系统的语言包漏洞信息。
映像流式传输 不可用 将 Artifact Registry 中的映像流式传输到 GKEDataproc Serverless,以加快自动扩缩速度、加快 Pod 启动速度并缩短拉取大型映像时的延迟时间。
Cloud Run 源代码部署 不可用 借助源代码部署,您可以使用单个 gcloud CLI 命令从源代码构建容器映像,将映像存储在 Artifact Registry 中,并将其部署到 Cloud Run。
价格 Container Registry pricing取决于 Cloud Storage 用量,包括存储空间和网络数据传输量。 由于注册表主机仅适用于多区域位置,因此数据传输费用包括将映像部署到 Google Cloud 的费用 Artifact Registry 有自己的pricing,基于存储和网络数据传输量。
配额 Container Registry 具有固定的请求限制。此外,还需遵循 Cloud Storage 配额。如需了解详情,请参阅配额和限制文档。 Artifact Registry 设有每个项目和每位用户的quotas。默认情况下,每位用户的配额没有限制,但您可以配置每位用户的上限,以便单个用户不会消耗过多的项目级配额。

gcloud 命令对比

下表汇总了 Container Registry 命令和 gcloud CLI 中的等效 Artifact Registry 命令。点击表中的链接可查看命令的参考页面。

该表不包含在 Container Registry 中没有等效命令的所有可用 Artifact Registry 命令。如需查看完整的 Artifact Registry 命令参考文档,请参阅 gcloud artifacts 文档。

操作 Container Registry Artifact Registry
创建代码库 不适用。 gcloud artifacts repositories create
删除代码库 不适用。 gcloud artifacts repositories delete
列出映像 gcloud container images list gcloud artifacts docker images list
列出标记 gcloud container images list-tags gcloud artifacts docker tags list
加标签 gcloud container images add-tag gcloud artifacts docker tags add
删除标记 gcloud container images untag gcloud artifacts docker tags delete
描述映像 gcloud container images describe gcloud artifacts docker images list --include-tags