推送和拉取映像

本页面介绍如何推送和拉取容器映像。

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

准备工作

  1. 如果目标代码库不存在,请创建新代码库
  2. 您必须至少具有代码库的 Artifact Registry Writer 访问权限。
  3. 安装 Docker(如果尚未安装)。
  4. 为 Docker 配置身份验证

推送映像

如需将本地映像推送到 Artifact Registry 代码库,请使用代码库名称标记该映像,然后再推送映像。

标记本地映像

  1. 确定映像的名称。完整映像名称的格式为:

    LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE
    

    其中:

    • LOCATION 是存储映像的代码库所在的单区域或多区域位置

    • PROJECT 是您的 Google Cloud Console 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目

    • REPOSITORY 是存储了映像的代码库的名称。

    • IMAGE 是映像的名称。该名称可能与映像的本地名称不同。

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

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

    本示例的此映像名称为:

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

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

  2. 运行以下命令以使用代码库名称标记本地映像:

    docker tag SOURCE-IMAGE LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE
    

    其中 SOURCE-IMAGE 是本地映像名称或映像 ID。

    此命令会使用代码库名称命名映像并应用 latest 标记。

    对于上一步中的示例映像,如果本地映像 my-image 位于当前目录中,请使用以下命令:

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

    如果要应用特定标记,请使用以下命令:

    docker tag SOURCE-IMAGE LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE:TAG
    

    如需使用示例映像标记 staging,请在命令中添加 :staging

    docker tag my-image us-docker.pkg.dev/my-project/my-repo/test-image:staging
    

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

使用以下命令推送带有标记的映像:

docker push LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE

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

docker push LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE:TAG

当您推送映像时,它会存储在指定的代码库中。

推送您的映像后,您可以执行以下操作:

  • 转到 Cloud Console 查看映像。

  • 运行 gcloud 命令来查看映像的标记和自动生成的摘要:

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

    以下示例输出显示了被截断的映像摘要,但该命令始终返回完整的映像摘要。

     IMAGE                                                 DIGEST         CREATE_TIME          UPDATE_TIME
      us-west1-docker.pkg.dev/my-project/my-repo/my-image  sha256:85f...  2019-04-10T15:08:45  2019-04-10T15:08:45
      us-west1-docker.pkg.dev/my-project/my-repo/my-image  sha256:238...  2019-04-10T17:23:53  2019-04-10T17:23:53
      us-west1-docker.pkg.dev/my-project/my-repo/my-image  sha256:85f...  2019-04-10T15:08:46  2019-04-10T15:08:46
      ```
    

拉取映像

如需从代码库中拉取映像,请使用以下命令:

docker pull LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE:TAG

docker pull LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE@IMAGE-DIGEST

其中:

  • LOCATION 是存储映像的代码库所在的单区域或多区域位置

  • PROJECT 是您的 Google Cloud Console 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目

  • REPOSITORY 是存储了映像的代码库的名称。

  • IMAGE 是代码库中的映像名称。

  • TAG 是您要拉取的映像版本的标记。

  • IMAGE-DIGEST 是映像内容的 sha256 哈希值。 映像的每个版本都有唯一的映像摘要。在 Google Cloud Console 中,点击特定映像可查看其元数据。此摘要将被列为映像摘要

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

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

用于拉取映像的命令如下:

docker pull us-docker.pkg.dev/my-project/my-repo/test-image:staging

后续步骤