从 Container Registry 转换

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

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

Artifact Registry 是 Google Cloud 上推荐的容器映像存储和管理服务。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 代码库。

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

  • 您希望尽可能减少 将现有映像和自动化迁移到 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 (IAM) 政策创建多个 Docker 仓库。例如,您可以在 us-east1 区域设置开发代码库和生产代码库,并为开发者提供不同级别的访问权限。
  • 您想创建虚拟代码库,以用作从多个上游标准代码库下载内容的单个端点。

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

标准代码库、远程代码库、虚拟代码库和 gcr.io 代码库可以共存。例如,您可以在 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
支持的格式 仅限容器映像 多种工件格式,包括容器映像、语言软件包和操作系统软件包。
域名 gcr.io pkg.dev

如果您设置了 gcr.io 代码库,Artifact Registry 还可以存储 gcr.io 网域的映像。

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

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

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

在 Artifact Registry 中,您的 Google Cloud 项目中没有要管理的 Cloud Storage 存储桶。您可以直接执行映像管理操作 创建 Deployment

注册表位置 一个可用区中只有四个多区域注册表主机 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 映像。 查看 Artifact Registry 和 Container Registry 的列表 Artifact 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 工件 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 命令。请参阅 gcloud artifacts 获取完整的 Artifact Registry 命令参考文档。

操作 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