从 Container Registry 转换

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

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

Google Cloud上推荐使用 Artifact Registry 服务来存储和管理容器映像。Artifact Registry 提供的容器管理功能与 Container Registry 提供的相同,并且还包含其他功能和优势。作为同时支持容器映像和非容器工件的全代管式服务,Artifact Registry 对 Container Registry 的功能进行了扩展。

您可以使用自动迁移工具将 Container Registry 端点迁移到 Artifact Registry gcr.io 仓库,而无需任何停机或服务中断。

新功能摘要

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

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

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

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

选择转换选项

您可以使用两种类型的代码库来迁移到 Artifact Registry:

Artifact Registry 中的 gcr.io 仓库

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

在以下情况下,请使用 gcr.io 代码库:

  • 您希望尽可能减少将现有映像和自动化操作迁移到 Artifact Registry 所需的设置和配置工作量。
  • 您无需在其他Google Cloud 项目或区域中设置 Artifact Registry 代码库。
Artifact Registry 中的 pkg.dev 仓库

pkg.dev 支持所有功能且完全独立于任何现有 Container Registry 主机的 Artifact Registry 代码库。

在以下情况下,请使用 pkg.dev 代码库:

  • 您有将数据存储在特定区域中的合规性要求。支持 gcr.io 网域的代码库仅在与 Container Registry 主机相同的多区域(asiaeuus)中可用。
  • 您想在与使用 Container Registry 的项目不同的项目中设置 Artifact Registry 代码库。
  • 您想重新设计图片的存储方式和存储位置。例如:

    • 请在与其他 Google Cloud区域性资源(包括 Cloud Run 和 Google Kubernetes Engine 等运行时)位于同一区域中创建代码库。
    • 在离您的团队更近的区域设置代码库。例如,您可以在澳大利亚区域(而非 asia 多区域)或南美洲区域(而非 us 多区域)创建代码库。
    • 在同一项目和位置使用不同的 Identity and Access Management (IAM) 政策创建多个 Docker 仓库。例如,您可以在 us-east1 区域设置开发代码库和生产代码库,并为开发者提供不同级别的访问权限。
  • 您希望创建虚拟代码库,以用作从多个上游 pkg.dev 标准模式代码库下载内容的单个端点。

  • 您想使用远程代码库充当外部来源的代理。

标准、远程、虚拟 pkg.devgcr.io 代码库可以共存。例如,您可以在 Artifact Registry 中创建 gcr.io 代码库,以迁移现有的 Container Registry 设置,并为新工作创建 pkg.dev 代码库。

使用我们的过渡工具

使用以下工具可识别使用 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 网域的映像。

代码库模式 不适用
  • 标准:存储工件。
  • 远程:缓存从上游源(例如 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 API 或 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,请参阅将工件注册库与 VPC Service Controls 搭配使用
VPC Service Controls 您可以向服务边界添加 Container Registry 您可以向服务边界添加 Artifact Registry
使用工件分析进行元数据存储和分析 使用按需扫描功能在搭载受支持操作系统的映像中扫描操作系统和语言包漏洞。自动扫描仅返回操作系统漏洞信息。 详细了解扫描类型
按需扫描
自动扫描
  • Google Cloud CLI 命令 gcloud container images 包含用于查看扫描结果(包括漏洞和其他元数据)的标志。
  • 扫描仅会针对使用 受支持的操作系统的 Container Registry 中的映像返回操作系统漏洞信息。
通过按需扫描和自动扫描来扫描操作系统和语言包漏洞。 详细了解扫描类型
按需扫描
自动扫描
  • Google Cloud CLI 命令 gcloud artifacts docker images 包含用于查看扫描结果(包括漏洞和其他元数据)的标志。
  • 扫描会针对 Artifact Registry 中采用 受支持的操作系统的映像返回操作系统漏洞信息,并针对受支持和不受支持的操作系统返回语言包漏洞信息。
映像流式传输 不可用 将 Artifact Registry 中的映像流式传输到 GKEDataproc 无服务器,以加快自动扩缩速度、缩短 pod 启动时间,并缩短拉取大型映像时的延迟时间。
Cloud Run 源代码部署 不可用 借助源代码部署,您可以使用单个 gcloud CLI 命令从源代码构建容器映像,将映像存储在 Artifact Registry 中,并将其部署到 Cloud Run。
价格 Container Registry 的价格基于 Cloud Storage 的用量,包括存储空间和网络数据传输。 由于注册表主机仅适用于多区域,因此数据传输费用包括将映像部署到 Google Cloud Artifact Registry 有自己的价格,其基于存储空间和网络数据传输。
配额 Container Registry 具有固定的请求限制。这项服务还会消耗 Cloud Storage 配额。如需了解详情,请参阅配额和限制文档。 Artifact Registry 具有按项目和用户分配的配额。默认情况下,每位用户的配额不受限制,但您可以配置每位用户的上限,以免单个用户消耗太多项目级配额。

gcloud 命令对比

下表汇总了 gcloud CLI 中的 Container Registry 命令和等效 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