管理图片

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

如需了解如何推送和拉取映像,请参阅推送和拉取映像

准备工作

  1. 如果目标代码库不存在,请创建新代码库
  2. 验证您是否拥有访问代码库所需的权限
  3. (可选)为 gcloud 命令配置默认值

所需的角色

如需获取管理映像所需的权限,请让管理员向您授予对代码库的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

列出映像

存储库模式:标准、远程

您可以使用 Google Cloud 控制台或 gcloud CLI 列出映像。

代码库列表同时包括 Artifact Registry 和 Container Registry 代码库。如需使用 Container Registry 代码库中的映像,请参阅 Container Registry 文档中的管理映像

控制台

如需查看代码库中的映像,请执行以下操作:

  1. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

  2. 点击包含容器映像的制品库。

  3. 点击图片即可查看其版本。

gcloud

配置默认值时,如需列出默认项目、代码库和位置中的所有映像,请运行以下命令:

gcloud artifacts docker images list

如需列出代码库中特定位置的映像,请运行以下命令:

gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT/REPOSITORY

如需列出特定映像的所有摘要和标记,请运行以下命令:

gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \
--include-tags

替换以下值:

  • LOCATION 是代码库的单区域或多区域位置
  • PROJECT 是您的 Google Cloud 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目
  • REPOSITORY 是存储了映像的代码库的名称。
  • IMAGE 是代码库中的映像名称。
  • --include-tags 会显示映像的所有版本,包括摘要和标记。如果省略此标志,则返回的列表仅包含顶级容器映像。

例如,假设一个映像具有以下特征:

  • 代码库位置:us
  • 代码库名称:my-repo
  • 项目 ID:my-project
  • 映像名称:my-image

完整的代码库名称如下:

us-docker.pkg.dev/my-project/my-repo

完整的映像名称为:

us-docker.pkg.dev/my-project/my-repo/my-image

如需详细了解映像名称格式,请参阅代码库和映像名称

列出文件

存储库模式:标准、远程

您可以列出代码库中的文件、指定容器映像的所有版本中的文件,或映像的特定版本中的文件。

对于以下所有命令,您可以通过在命令中添加 --limit 标志来设置要返回的文件数量上限。

配置默认值时,如需列出默认项目、代码库和位置中的所有文件,请运行以下命令:

gcloud artifacts files list

如需列出指定项目、代码库和位置中的文件,请运行以下命令:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION

如需列出特定容器映像的所有版本的文件,请执行以下操作:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE

如需列出特定容器映像版本的文件,请执行以下操作:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --version=VERSION
如需列出特定标记的文件,请执行以下操作:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --tag=TAG

替换以下值:

  • LOCATION 是代码库的单区域或多区域位置
  • PROJECT 是您的 Google Cloud 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目
  • REPOSITORY 是存储映像的代码库的名称。
  • PACKAGE 是映像的名称。
  • VERSION 是映像摘要,是一个以 sha256: 开头的字符串。
  • TAG 是与容器映像关联的标记。

示例

请考虑以下图片信息:

  • 项目:my-project
  • 代码库:my-repo
  • 代码库位置:us-central1
  • 图片:my-app

以下命令可列出默认项目my-repo 位置 us-central1 中的所有文件:

gcloud artifacts files list \
    --location=us-central1 \
    --repository=my-repo
以下命令会列出映像版本中包含摘要 sha256:88b205d7995332e10e836514fbfd59ecaf8976fc15060cd66e85cdcebe7fb356 的文件

gcloud artifacts files list \
    --project=my-project \
    --location=us-central1 \
    --repository=my-repo \
    --package=my-app \
    --version=sha256:88b205d7995332e10e836514fbfd59ecaf8976fc15060cd66e85cdcebe7fb356
以下命令会列出映像版本中带有 1.0-dev 标记的文件

gcloud artifacts files list \
    --project=my-project \
    --location=us-central1 \
    --repository=my-repo \
    --package=my-app \
    --tag=1.0-dev

标记映像

您可以标记 Artifact Registry 代码库中的现有映像,也可以在将这些映像推送到代码库之前对其进行标记。

标记代码库中的映像

存储库模式:标准

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

控制台

如需标记代码库中的映像,请执行以下操作:

  1. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

  2. 点击映像以查看映像的版本。

  3. 选择要标记的映像版本。

  4. 在所选版本的行中,点击更多操作 (更多操作),然后点击修改标记

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

gcloud

如需标记代码库中的映像,请使用映像摘要或标记指定映像版本,然后指定要添加的标记。运行下列其中一个命令:

gcloud artifacts docker tags add IMAGE-VERSION TAG

地点

  • IMAGE-VERSION 是要标记的映像版本的全名,请使用映像版本上的映像摘要或现有标记。
  • TAG 是要添加的代码的全名

例如,假设一个映像具有以下特征:

  • 代码库位置:us
  • 代码库名称:my-repo
  • 项目 ID:my-project
  • 映像名称:my-image
  • 现有代码:iteration6-final
  • 要添加的标签:release-candidate

如需向带有标记 iteration6-final 的映像版本添加标记 release-candidate,请运行以下命令:

gcloud artifacts docker tags add \
us-docker.pkg.dev/my-project/my-repo/my-image:iteration6-final \
us-docker.pkg.dev/my-project/my-repo/my-image:release-candidate

如需详细了解映像名称格式(包括如何处理网域级项目),请参阅代码库和映像名称

标记本地映像

如需将任何本地映像推送到 Artifact Registry,您首先需要使用代码库名称标记该映像,然后再进行推送。如需查看相关说明,请参阅推送和拉取

取消对映像的标记

存储库模式:标准

您可以使用 Google Cloud 控制台或命令行从 Artifact Registry 中的映像移除标记。

控制台

  1. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

  2. 点击映像以查看映像的版本。

  3. 选择要取消标记的映像版本。

  4. 在所选版本的行中,点击更多操作 (更多操作),然后点击修改标记

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

gcloud

如需删除标记并将其从映像中移除,请运行以下命令:

 gcloud artifacts docker tags delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE:TAG

地点

  • LOCATION 是代码库的单区域或多区域位置
  • PROJECT 是您的 Google Cloud 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目
  • REPOSITORY 是存储了映像的代码库的名称。
  • IMAGE 是代码库中的映像名称。
  • TAG 是您要删除的版本的标记。

删除图片

存储库模式:标准、远程

您可以删除整个容器映像,也可以删除与标记或摘要关联的特定映像版本。

  • 图片一经删除便无法撤消。
  • 对于远程代码库,系统会移除图片的缓存副本。 仍可从上游来源获得该映像。如果远程代码库收到对同一映像的新请求,则会再次下载并缓存该映像。

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

如需从 Google Cloud 控制台或 gcloud CLI 删除映像,请执行以下操作:

控制台

  1. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

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

  3. 选择您要删除的版本。

  4. 点击删除

  5. 在确认对话框中,点击删除

gcloud

如需删除映像及其所有标记,请运行以下命令:

gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE --delete-tags

如需删除特定映像版本,请使用以下命令之一。

gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE:TAG [--delete-tags]

gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE@IMAGE-DIGEST [--delete-tags]

地点

  • LOCATION 是代码库的单区域或多区域位置
  • PROJECT 是您的 Google Cloud 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目
  • REPOSITORY 是存储了映像的代码库的名称。
  • IMAGE 是代码库中的映像名称。
  • TAG 是您要删除的版本的标记。如果多个标记与同一映像版本相关联,则您必须添加 --delete-tags 才能删除映像版本,而无需先移除标记。
  • IMAGE-DIGEST 是您要删除的版本的 sha256 哈希值。如果某个标记与映像摘要相关联,则您必须添加 --delete-tags 才能删除映像版本,而无需先移除标记。
  • --delete-tags 会移除应用于映像版本的所有标记。借助此标志,您可以在以下情况下强制删除映像版本:
    • 您指定了一个标记,但有其他标记与映像版本相关联。
    • 您指定的映像摘要至少具有一个标记。