将 Container Registry 与 Google Cloud Platform 搭配使用

为方便访问,Google Cloud Platform 中的计算资源已与 Container Registry 集成。

Compute Engine

要从 Compute Engine 实例中拉取私有 Docker 映像,请确保您的实例对映像所在的存储分区具有 read 权限。如果您的实例和映像存储分区位于同一 Google Cloud Platform 项目中,则系统会默认正确配置该权限。

要从 Compute Engine 实例推送私有 Docker 映像,您的实例必须对映像所在的存储分区具有 read-writefull-control 权限

要启动对您的存储分区具有 read-write 权限的实例,请运行以下命令:

gcloud compute instances create INSTANCE \
  --scopes https://www.googleapis.com/auth/devstorage.read_write

Container-Optimized Compute Engine 实例

如需了解如何使用注册表中的映像启动 Container-Optimized Compute Engine 实例,请参阅通过 cloud-config 启动 Docker 容器

如需了解详情,请参阅创建和配置实例

Google Kubernetes Engine

Google Kubernetes Engine 集群会自动配置从同一项目的 Container Registry 中拉取私有映像的访问权限。如果注册表和集群位于同一 Cloud 项目中,则您无需执行额外步骤即可配置身份验证。

您可以使用以下命令在 Google Kubernetes Engine 集群上运行 Container Registry 映像:

kubectl run [NAME] --image=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

其中:

  • [NAME] 是资源的名称
  • [HOSTNAME] 列在控制台的“Location”下。可为以下四个选项之一:gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io
  • [PROJECT-ID] 是您的 Google Cloud Platform Console 项目 ID。请参阅网域范围项目,了解如何使用含有域名的项目 ID。
  • [IMAGE] 是 Container Registry 映像的名称。
  • [TAG] 是标识 Container Registry 映像版本的标记。如果您未指定标记,则 Container Registry 将查找默认标记 latest

如需详细了解 Kubernetes 命令,请参阅 kubectl 概览。如果您的映像位于其他项目中,您需要向 Google Kubernetes Engine 集群使用的服务帐号明确授予映像存储所在存储分区的读取权限。

请详细阅读配置访问权限控制,以了解如何授予从其他项目中运行的集群拉取映像的权限。

Google Kubernetes Engine 会使用在集群节点的虚拟机实例上配置的服务帐号来从注册表中拉取映像。因此,用于拉取映像的服务帐号具有以下特点:

  • 默认采用 [PROJECT_ID]-compute@developer.gserviceaccount.com 格式,或
  • 使用与 --service-account 选项相同的值(如果在使用 gcloud 创建集群时指定了此选项)。

App Engine 柔性环境

App Engine 柔性环境中,通过提供自定义 Docker 映像或 Dockerfile,您可以自定义现有运行时(例如 Java 8)或提供您自己的运行时。

柔性环境会自动使用 Cloud Build 构建容器映像,并将其存储在 Container Registry 中。

向 App Engine 部署映像

您可以使用 gcloud 命令行工具将由 Container Registry 托管的映像部署到 App Engine。

您可以在映像的根目录中使用 gcloud beta app gen-config 命令自动创建向 App Engine 部署映像所需的 app.yaml 文件。您也可以自行编写此文件。

创建 App Engine 配置文件、构建 Docker 映像并将映像推送到 Container Registry 后,您可以运行以下命令来将映像部署到 App Engine:

gcloud app deploy --image-url=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

其中:

  • [HOSTNAME] 列在控制台的“Location”下。可为以下四个选项之一:gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io
  • [PROJECT-ID] 是您的 Google Cloud Platform Console 项目 ID。请参阅网域范围项目,了解如何使用含有域名的项目 ID。
  • [IMAGE] 是 Container Registry 映像的名称。
  • [TAG] 是标识 Container Registry 映像版本的标记。如果您未指定标记,则 Container Registry 将查找默认标记 latest
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Container Registry