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 的功能:
- 代码库级访问权限控制。
- 在区域中托管工件,以减少延迟时间和数据传输费用,并遵守数据驻留要求。
- 将映像流式传输到 Google Kubernetes Engine 和 Dataproc Serverless,以缩短工作负载启动时间。
- 从源代码部署到 Cloud Run。
- 代码库活动的审核日志记录。
- 强制执行组织政策,包括使用客户管理的加密密钥 (CMEK) 和位置限制条件进行加密。
- 扫描 Go 和 Java 漏洞,以及容器中的操作系统漏洞。
- 将多个代码库汇总到单个主机中的虚拟代码库(预览版)。
- 远程仓库,用于缓存来自上游来源(如 Docker Hub 或 Maven Central(预览版)的工件)
如需详细了解这些功能,请参阅功能比较。
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 主机相同的多区域位置使用:asia
、eu
和us
。 - 您希望在不同于目前使用 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 还可以为 |
仓库模式 | 不适用 |
|
注册表创建 | 您可以通过将第一个映像推送到注册表主机来创建该主机。 Container Registry 将映像存储在 Google Cloud 项目的 Cloud Storage 存储桶中,并且必须直接对存储桶执行授予注册表专属权限等操作。 |
创建代码库是一项不同于推送和拉取的操作,可明确区分代码库管理与代码库使用情况。
在 Artifact Registry 中,Google Cloud 项目中没有需要管理的 Cloud Storage 存储分区。您可以直接对代码库执行映像管理操作。 |
注册表位置 | 一个 Google Cloud 项目中只能使用四个多区域注册表主机。 | 在单区域或多区域中创建多个单独控制的代码库。 |
访问权限控制 |
|
|
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 进行元数据存储和分析 | 在具有受支持操作系统的映像中通过按需扫描扫描操作系统和语言包漏洞。自动扫描只会返回操作系统漏洞信息。详细了解扫描类型。
|
通过按需扫描和自动扫描,扫描操作系统和语言包漏洞。详细了解扫描类型。
|
映像流式传输 | 不可用 | 将 Artifact Registry 中的映像流式传输到 GKE 或 Dataproc 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
文档。