从 Container Registry 转换

Container Registry 已弃用。自 2025 年 3 月 18 日起,Container Registry 已关停,且无法将映像写入 Container Registry。

托管在 Artifact Registry 上的 gcr.io 网址(包括具有 gcr.io 网址的 Google 自有映像)不受 Container Registry 关闭的影响。

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

新功能摘要

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

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

由 Google 维护的现有 Container Registry 映像

之前托管在 Container Registry 上的大多数 Google 拥有的映像现在托管在 Artifact Registry 的 gcr.io 代码库中。您无需更改网址即可提取这些图片。例如,您仍然可以使用 Cloud Build 官方构建器映像

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

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

特性比较

下表总结了 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 或 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 artifacts docker images 包含用于查看扫描结果(包括漏洞和其他元数据)的标志。
  • 扫描会返回 Artifact Registry 中具有 受支持的操作系统的映像的操作系统漏洞信息,以及受支持和不受支持的操作系统中的语言包漏洞信息。
映像流式传输 不可用 在 Artifact Registry 中将映像流式传输到 GKEGoogle Cloud Serverless for Apache Spark,以便在拉取大型映像时实现更快的自动扩缩、更快的 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