管理映像

本页面介绍了如何管理 Container Registry 中托管的映像。管理映像包括列出代码库中的映像、添加标记、删除标记、将映像复制到新代码库以及删除映像。

如需了解如何将本地映像推送到 Container Registry 或拉取 Container Registry 中存储的映像,请参阅推送和拉取映像

准备工作

确保您已具备以下条件:

  1. 安装了最新版本的 Cloud SDK,其中包括 gcloud 命令行工具

  2. 已经安装 Docker

  3. 有权访问您将要使用的注册表

  4. 已经将 Docker 配置为使用 gcloud 作为凭据帮助程序,或使用其他身份验证方法。如需使用 gcloud 作为凭据帮助程序,请运行以下命令:

    gcloud auth configure-docker
    
  5. Docker 要求凭据帮助程序位于系统 PATH 中。确保您选择的凭据帮助程序 gclouddocker-credential-gcr 位于系统 PATH

按映像存储位置列出映像

您可以使用 Google Cloud Console 或命令行列出特定主机位置中的映像。

控制台

要列出您的某个主机位置中的映像,请执行以下操作:

  1. 转到 Container Registry 页面。

    打开 Container Registry 页面

  2. 使用名称上方的选择器选择主机位置。选项包括所有位置和项目当前使用的主机名,这可能包括 gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io

gcloud

如需列出您的某个主机位置中的映像,请使用以下命令:

gcloud container images list --repository=[HOSTNAME]/[PROJECT-ID]

其中:

  • [HOSTNAME] 列在控制台中的 Location 下方。可以是以下四个选项之一:gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io
  • [PROJECT-ID] 是您的 Google Cloud Console 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目

如果存在嵌套注册表,请指定嵌套映像存储所在的代码库层级以列出这些映像:

gcloud container images list --repository=[HOSTNAME]/[PROJECT-ID]/[IMAGE]

其中 [IMAGE] 是用于嵌套更多映像的代码库。

另请参阅 gcloud container images list 文档。

列出映像的版本

注册表可以包含映像的不同版本。这些版本具有相同的映像名称,并且通过其摘要和标记进行标识。

Console

如需查看映像的摘要和标记,请执行以下操作:

  1. 转到 Container Registry 页面。

    打开 Container Registry 页面

  2. 点击映像名称即可查看该映像的版本。 被截短的摘要列在名称下,而标记列在标记下。

  3. 要获取完整摘要,请点击映像版本以查看其元数据。此摘要称为映像摘要

gcloud

如需列出映像的被截短摘要和标记,请运行以下命令:

gcloud container images list-tags [HOSTNAME]/[PROJECT-ID]/[IMAGE]

其中:

  • [HOSTNAME] 列在控制台中的 Location 下方。可以是以下四个选项之一:gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io
  • [PROJECT-ID] 是您的 Google Cloud Console 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目
  • [IMAGE] 是 Container Registry 映像的名称。

如需列出特定映像的一个或多个版本的完整摘要,请运行以下命令:

gcloud container images list-tags --format='get(digest)' [HOSTNAME]/[PROJECT-ID]/[IMAGE]

请参阅 gcloud container images list-tags 文档。

标记映像

您可以使用 Google Cloud Console 或命令行为映像添加标记。在注册表中,每个映像版本的标记各不相同。因此,如果某个映像存在多个版本,则每个标记仅适用于其中一个版本。如果使用已被占用的标记来标记映像,则该标记将从原始版本迁移到新标记的版本。

Console

要标记由 Container Registry 托管的映像,请执行以下操作:

  1. 转到 Container Registry 页面。

    打开 Container Registry 页面

  2. 点击映像名称即可查看该映像的版本。

  3. 标记下,点击修改图标。

  4. 在字段中输入新标记,然后点击保存

gcloud

如需标记由 Container Registry 托管的映像,请使用 gcloud container images add-tag 命令:

gcloud container images add-tag \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG] \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[NEW_TAG]

gcloud container images add-tag \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST] \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[NEW_TAG]

其中:

  • [HOSTNAME] 列在控制台中的 Location 下方。可以是以下四个选项之一:gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io
  • [PROJECT-ID] 是您的 Google Cloud Console 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目
  • [IMAGE] 是 Container Registry 映像的名称。
  • [TAG] 是已应用于映像的标记。
  • [IMAGE_DIGEST] 是映像内容的 sha256 哈希值。
  • [NEW_TAG] 是您要为映像添加的新标记。

如需详细了解此命令,请参阅 gcloud container images add-tag

标记本地映像以在 Container Registry 上托管

如需将任何本地映像推送到 Container Registry,您首先需要使用注册表名称标记该映像,然后再进行推送。如需查看相关说明,请参阅将映像推送到注册表

取消对映像的标记

您可以使用 Google Cloud Console 或命令行移除 Container Registry 映像的标记。

控制台

  1. 转到 Container Registry 页面。

    打开 Container Registry 页面

  2. 点击映像名称即可查看该映像的版本。

  3. 标记下,点击修改图标。

  4. 删除标记,然后点击保存

gcloud

如需移除映像的标记,请使用以下命令:

gcloud container images untag [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

其中:

  • [HOSTNAME] 列在控制台中的 Location 下方。可以是以下四个选项之一:gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io
  • [PROJECT-ID] 是您的 Google Cloud Console 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目
  • [IMAGE] 是 Container Registry 映像的名称。
  • [TAG] 是您要移除的标记。

    如需详细了解此命令,请参阅 gcloud container images untag

将映像复制到新注册表

您可以使用命令行将映像从一个代码库复制到另一个代码库。您必须拥有这两个代码库的访问权限。

如需将某个映像从一个代码库复制到另一个代码库,请使用 gcloud container images add-tag 命令,并通过映像的标记来标识要移动的映像,具体命令分别如下所示:

gcloud container images add-tag \
[SOURCE_HOSTNAME]/[SOURCE_PROJECT-ID]/[SOURCE_IMAGE]:[SOURCE_TAG] \
[DESTINATION_HOSTNAME]/[DESTINATION_PROJECT-ID]/[DESTINATION_IMAGE]:[DESTINATION_TAG]

gcloud container images add-tag \
[SOURCE_HOSTNAME]/[SOURCE_PROJECT-ID]/[SOURCE_IMAGE]@[IMAGE_DIGEST] \
[DESTINATION_HOSTNAME]/[DESTINATION_PROJECT-ID]/[DESTINATION_IMAGE]:[DESTINATION_TAG]

其中,以下内容对于来源和目标均适用:

  • [HOSTNAME] 是映像的托管位置,可以是以下四个选项之一:gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io
  • [PROJECT-ID] 是 Google Cloud Console 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目
  • [IMAGE] 是 Container Registry 映像的名称。
  • [IMAGE_DIGEST] 是映像内容的 sha256 哈希值。
  • [TAG] 是标识要移动的来源映像的标记,或要对目标代码库中的映像应用的标记。

例如,如果要将快速入门映像复制到另一个项目的代码库以及位于欧洲的主机,但是您希望保持映像名称和标记不变,则可以使用以下命令:

gcloud container images add-tag \
gcr.io/[PROJECT-ID]/quickstart-image:tag1 \
eu.gcr.io/[OTHER-PROJECT-ID]/quickstart-image:tag1

其中,[PROJECT-ID][OTHER-PROJECT-ID] 分别为您要复制的映像的来源项目和目标项目的 Google Cloud Console 项目 ID。您必须对这两个项目中的代码库拥有访问权限。如果其中任一项目 ID 包含英文冒号 (:),请参阅网域级项目

如需详细了解此命令,请参阅 gcloud container images add-tag

删除映像

您可以使用 Google Cloud Console 或命令行删除映像。删除映像后,您无法撤消此操作。

还有其他工具可帮助您管理未使用的映像。例如,gcr-cleaner 工具可以根据不同的标准查找并删除旧映像。移除未使用的映像有助于降低存储费用。gcr-cleaner 工具不是 Google 官方产品。

如需从 Google Cloud Console 或 gcloud 工具删除映像,请执行以下操作:

控制台

  1. 转到 Container Registry 页面。

    打开 Container Registry 页面

  2. 点击映像名称即可查看该映像的版本。

  3. 在注册表中,选中待删除映像的各版本旁边的复选框。

  4. 点击页面顶部的删除

  5. 删除代码库内容弹出式窗口中,点击删除

gcloud

运行下列其中一个命令:

  • 映像使用摘要标识:

    gcloud container images delete [HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST]
    
  • 映像使用标记标识,并且具有多个标记:

    gcloud container images delete [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG] --force-delete-tags
    

其中:

  • [HOSTNAME] 列在控制台中的 Location 下方。可以是以下四个选项之一:gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io
  • [PROJECT-ID] 是您的 Google Cloud Console 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目
  • [IMAGE] 是 Container Registry 映像的名称。
  • [IMAGE_DIGEST] 是映像内容的 sha256 哈希值。
  • [TAG] 是要移除的映像的标记。

如需详细了解此命令,请参阅 gcloud container images delete

后续步骤