Push docker image to GCR for kubernetes 推送和拉取映像

本页面介绍如何推送和拉取映像,这是使用 Container Registry 时的两项最常见任务。要将新映像推送到 Container Registry,您首先需要使用注册表名称来标记该映像,如下所述。

要开始使用 Container Registry,请参阅快速入门

如需了解如何列出、标记和删除映像,请参阅管理映像

准备工作

确保您已具备以下条件:

  1. 已经安装最新版本的 Cloud SDK,其中包括 gcloud 命令行工具
  2. 已经安装 Docker
  3. 有权访问您将对其执行推送和拉取操作的注册表
  4. 已经将 Docker 配置为使用 gcloud 作为凭据帮助程序,或使用其他身份验证方法。要使用 gcloud 作为凭据帮助程序,请运行以下命令:gcloud auth configure-docker

将映像推送到注册表

要将任何本地映像推送到 Container Registry,您首先需要使用注册表名称标记该映像,然后再进行推送。

使用注册表名称标记本地映像

  1. 确定注册表名称:
    1. 选择一个主机名,以此指定注册表的存储区域。此区域不是您所在的位置,而是映像的存储位置。举例来说,如果您身处澳大利亚,那么可能需要使用位于亚洲的主机。您有四种选择:
      • gcr.io 将映像托管在美国,但该位置未来可能会有所变化
      • us.gcr.io 将映像托管在美国,但会存储在与由 gcr.io 托管的映像不同的存储分区
      • eu.gcr.io 将映像托管在欧盟
      • asia.gcr.io 将映像托管在亚洲
      在控制台中,映像的主机名将列在位置下。
    2. 选择一个映像名称,该名称可能与本地机器上的映像名称不同。
    3. 将主机名、Google Cloud Platform Console 项目 ID 和映像名称组合在一起:[HOSTNAME]/[PROJECT-ID]/[IMAGE]
      请参阅网域范围项目,了解如何使用含有域名的项目 ID。
  2. 运行以下命令以使用注册表名称标记本地映像:docker tag [SOURCE_IMAGE] [HOSTNAME]/[PROJECT-ID]/[IMAGE]
    其中 [SOURCE_IMAGE] 是本地映像名称。此命令会使用注册表名称命名映像并应用 latest 标记。如果要应用其他标记,请使用以下命令:docker tag [SOURCE_IMAGE] [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

将带有标记的映像推送到 Container Registry

要将带有标记的映像推送到 Container Registry,请使用以下命令:

docker push [HOSTNAME]/[PROJECT-ID]/[IMAGE]

此命令将推送带有 latest 标记的映像。如果要推送带有不同标记的映像,请使用以下命令:

docker push [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

如果您将映像推送到采用新主机名的注册表,Container Registry 会在指定的多区域位置中创建一个存储分区。推送您的映像后,您可以执行以下操作:

  • 转到 GCP Console 以查看注册表和映像。
  • 运行 gcloud container images list-tags 来查看映像的标记和自动生成的摘要:gcloud container images list-tags [HOSTNAME]/[PROJECT-ID]/[IMAGE]
    此命令的输出类似如下所示:DIGEST        TAGS        TIMESTAMP
    44bde...      test        2017-..-..

从注册表中拉取映像

要从 Container Registry 中拉取映像,请使用以下命令:

docker pull [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

docker pull [HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST]

其中:

  • [HOSTNAME] 列在控制台的位置下方。可为以下四个选项之一:gcr.ious.gcr.ioeu.gcr.io 或 asia.gcr.io
  • [PROJECT-ID] 是您的 Google Cloud Platform Console 项目 ID。请参阅网域范围项目,了解如何使用含有域名的项目 ID。
  • [IMAGE] 是 Container Registry 映像的名称。
  • [TAG] 是应用于映像的标记。在注册表中,每个映像的标记各不相同。
  • [IMAGE_DIGEST] 是映像内容的 sha256 哈希值。在控制台中,点击特定映像可查看其元数据。此摘要将被列为映像摘要

要获取特定映像的拉取命令,请执行以下操作:

  1. 点击映像名称以转至特定注册表。
  2. 在该注册表中,选中要拉取的映像版本旁边的复选框。
  3. 点击页面顶部的显示拉取命令
  4. 复制拉取命令,以此使用标记或摘要标识映像。

LEAVE A COMMENT