从 Container Registry 转换

Artifact Registry 是 Container Registry 的进化版产品。作为同时支持容器映像和非容器工件的全代管式服务,Artifact Registry 对 Container Registry 的功能进行了扩展。

如果您目前使用的是 Container Registry,请参阅本页面上的信息,了解如何过渡到 Artifact Registry。

概览

Artifact Registry 提供的容器管理功能与 Container Registry 提供的相同。您可以开始过渡自动化功能以便将 Artifact Registry 用于您的容器。

向后兼容性与共存性

您可以在同一个项目中同时使用 Artifact Registry 和 Container Registry。当您使用 gcloud 或通过 Cloud Console 查看代码库列表时,Artifact Registry 还会列出同一项目中的 Container Registry 代码库。

在 Artifact Registry 正式发布后,这两项服务会继续共存。如需利用 Artifact Registry 中的扩展功能,您可以将容器和自动化功能过渡到 Artifact Registry。

Artifact Registry 正式发布之后,您可以选择创建向后兼容的代码库。借助这些代码库,您可以对构建和部署的自动化操作执行更为渐近的更新,并且支持:

  • gcloud container images 命令
  • 使用 *.pkg.dev*.gcr.io 主机名引用代码库。

为了提供兼容性,这些代码库有一些功能限制。具体来说,每个向后兼容的代码库都必须与项目中相应的 Container Registry 主机名位于同一个多区域位置。

设置代码库

在 Artifact Registry 中,您必须先创建代码库,然后才能将映像推送到这些代码库。因此,改用 Artifact Registry 的一个关键环节是设置 Artifact Registry 代码库并将其集成到 CI/CD 自动化操作中。

为了提供更大灵活性,在 Artifact Registry 表示代码库的方式方面进行了一些更改。

Container Registry

每个多区域位置都与一个存储分区相关联。您可以选择将您的映像组织到主机名下的代码库中。请思考下列示例,它在三个位置显示映像 webapp

us.gcr.io/my-project/webapp
us.gcr.io/my-project/team1/webapp
us.gcr.io/my-project/team2/webapp

代码库只是一种组织机制,并不会限制访问。有权访问此项目中 us.gcr.io 的存储分区的任何用户都可以访问 webapp 容器映像的所有版本。

Artifact Registry

每个代码库都是您项目中单独的资源。由于每个代码库都是唯一的资源,因此您可以执行以下操作:

  • 为每个代码库命名、提供说明和添加标签
  • 在同一位置创建多个代码库
  • 配置特定于代码库的权限

此外,代码库的位置可以是单区域或多区域位置。

这些更改可让您更好地控制自己的代码库。例如,如果您在圣保罗和悉尼都拥有团队,则可以为地理位置上更接近的单区域(与最近的多区域位置相比)中的每个团队创建一个代码库。

southamerica-east1-docker.pkg.dev/my-project/team1/webapp
australia-southeast1-docker.pkg.dev/my-project/team2/webapp

然后,您可以向每个团队仅授予其团队代码库的权限。

如需查看如何过渡到 Artifact Registry 的相关说明,请参阅设置指南

特性比较

本部分汇总了 Container Registry 特性的更改和改进。

Artifact Registry 正式发布之后,它将提供一个选项用来创建可向后兼容的代码库,您可以使用 *-docker.pkg.dev*.gcr.io 主机名引用这些代码库。

特性 Container Registry Artifact Registry
支持的格式 仅限容器映像 多种工件格式,包括容器映像、Java 软件包和 Node.js 模块。
代码库
  • 创建 - 如果您之前从未在多区域位置推送过映像,则系统会自动在多区域位置创建一个代码库。
  • 位置 - 仅限多区域代码库。
  • 组织 - Google Cloud 项目中同一个多区域主机上的所有代码库共用一个存储分区。
  • 访问权限控制 - 跨项目级层或为每个多区域主机的存储分区授予权限。
  • 创建 - 您必须先创建一个代码库,然后才能向其推送映像。
  • 位置 - 多区域或单区域代码库。例如,距离澳大利亚最近的多区域是亚洲。通过区域支持,您可以在悉尼数据中心中创建代码库。
  • 组织 - 您可以在每个区域或多区域位置创建多个独立的代码库。应用标签以按团队、开发阶段或其他类别将它们分组。
  • 访问权限控制 - 授予对项目或个别代码库的权限。
主机名 主机位于 gcr.io 网域上。 主机位于 pkg.dev 网域上。如需详细了解名称格式,请参阅代码库和工件名称
权限
  • 使用 Cloud Storage 权限授予访问权限。
  • 您可以允许仅访问存储在多区域位置(而非各个代码库)中的所有映像。例如,您可以允许仅访问项目 my-project 中的 us.gcr.io,但不能向 us.gcr.io/my-project/team1us.gcr.io/my-project/team2 下的映像授予特定权限
  • 使用 Artifact Registry 权限授予访问权限。
  • 您可以限制访问各个代码库的权限。例如,您可以分别控制对 us-docker.pkg.dev/my-project/team1us-docker.pkg.dev/my-project/team2 中的映像的访问权限
Authentication 提供多种身份验证方法,让您能够通过第三方客户端推送和拉取映像。 Artifact Registry 支持与 Container Registry 使用相同的身份验证方法。如需了解详情,请参阅为 Docker 设置身份验证

如果使用 Docker 凭据帮助程序,请满足以下条件:

  • 必须使用 2.0.0 或更高版本。
  • 低于 18.03 版的 Docker 客户端版本不再受到支持。
  • 您必须将要使用的 Artifact Registry 位置添加到凭据帮助程序配置中。
客户管理的加密密钥 (CMEK) 使用 CMEK 来加密包含映像的存储分区。 使用 CMEK 来加密各个代码库。
使用 Google Cloud Console 通过 Cloud Console 的 Container Registry 部分来查看和管理 Container Registry 映像。 在 Cloud Console 的 Artifact Registry 部分中查看 Artifact Registry 和 Container Registry 代码库的列表。通过此页面管理您的 Artifact Registry 代码库和映像。

如果您点击 Container Registry 代码库,系统会将您转到 Cloud Console 的 Container Registry 部分中的映像列表。

使用 gcloud 和 API 命令 使用 gcloud container images 命令。 使用 gcloud artifacts docker 命令。

Artifact Registry 正式发布之后,Artifact Registry 将提供一个选项,用于创建支持 gcloud container images commands 的向后兼容代码库。

如需了解 Container Registry 和 Artifact Registry gcloud 命令的对比情况,请参阅 gcloud 命令对比

Artifact Registry 还包含一个用于管理所有格式的代码库和工件的 API。

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

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

缓存的 Docker Hub 映像 mirror.gcr.io缓存经常请求的 Docker Hub 映像。 mirror.gcr.io 会继续缓存从 Docker Hub 中频繁请求的映像。
VPC Service Controls 您可以向服务边界添加 Container Registry 您可以向服务边界添加 Artifact Registry
元数据存储和分析 Container Analysis 提供元数据存储、漏洞扫描,以及与使用 Binary Authorization 等元数据的服务集成等服务。用于处理备注和发生实例的 Cloud SDK 命令位于 gcloud container images 群组下。 Container Analysis 同时支持 Artifact Registry 和 Container Registry 中的容器映像的元数据存储和漏洞扫描服务。
  • 这两个产品使用相同的 Container Analysis API。在 Container Registry 或 Artifact Registry 中启用 Container Analysis API 后,这两个产品都会启用 Container Analysis API。
  • 这两个产品都对 Pub/Sub 通知使用相同的“gcr”主题。这意味着您对“gcr”主题的订阅将同时包含 Artifact Registry 和 Container Registry 的通知。
  • 用于处理备注和发生实例的 Cloud SDK 命令位于 gcloud artifact docker 群组下。
Google 提供的映像 Google 提供的映像托管在 gcr.io 上。例如: Google 提供的映像将继续在 gcr.io 中提供。
价格 Container Registry 的价格基于 Cloud Storage 的用量,包括存储空间和网络出站流量。 Artifact Registry 有自己的价格,其基于存储空间和网络出站流量。