Container Registry 快速入门

本快速入门介绍了如何配置 Container Registry Docker,然后推送和拉取映像。

Google Cloud 提供了两种用于存储和管理容器映像的服务:

Artifact Registry(推荐)

用于在私有代码库中存储和管理工件的服务,包括容器映像、Helm 图表和语言软件包。它是 Google Cloud 的推荐容器映像注册表。

试用 Docker 快速入门,熟悉 Artifact Registry。

Container Registry

支持 Docker Image Manifest V2 和 OCI 映像格式的私有容器映像注册表。并提供部分 Artifact Registry 功能。

如果您当前未使用 Container Registry,请改用 Artifact Registry。 如需比较 Container Registry 和 Artifact Registry 以及从 Container Registry 转换到 Artifact Registry 的信息,请参阅从 Container Registry 转换

开始前须知

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Container Registry API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Container Registry API.

    Enable the API

选择 shell

为完成本快速入门,请使用 Cloud Shell 或本地 shell。

Cloud Shell
Cloud Shell 是一个 shell 环境,用于管理托管在 Google Cloud 上的资源。其中预装了 Docker 和 Google Cloud CLI(Google Cloud 的主要命令行界面)。
本地 shell
如果您更喜欢使用本地 shell,则必须在您的环境中安装 Docker 和 gcloud CLI。

启动 Cloud Shell

如需启动 Cloud Shell,请执行以下步骤:

  1. 转到 Google Cloud Console。

    Google Cloud Console

  2. 在菜单栏中,点击激活 Cloud Shell 按钮:“

控制台下方的框架内会打开一个 Cloud Shell 会话。您可以使用此 shell 运行 gcloud 命令。

设置本地 shell

如需安装 gcloud 和 Docker,请执行以下步骤:

  1. 安装 gcloud CLI。如需更新现有安装,请运行 gcloud components update 命令。

  2. 安装 Docker(如果尚未安装)。

  3. Docker 需要以特权方式与注册表进行交互。在 Linux 或 Windows 上,将用于运行 Docker 命令的用户添加到 Docker 安全组。MacOS 上不需要执行此步骤,因为 Docker Desktop 以根用户身份在虚拟机上运行。

    Linux

    Docker 安全组名为 docker。如需添加用户名,请运行以下命令:

    sudo usermod -a -G docker ${USER}
    

    Windows

    Docker 安全组名为 docker-users。要通过管理员命令提示符添加用户,请运行以下命令:

    net localgroup docker-users DOMAIN\USERNAME /add
    

    其中

    • DOMAIN 是您的 Windows 网域。
    • USERNAME 是您的用户名。
  4. 退出并重新登录以使群组成员资格更改生效。如果您使用的是虚拟机,则可能需要重启虚拟机才能使成员更改生效。

  5. 如需确保 Docker 正在运行,请运行以下 Docker 命令以返回当前时间和日期:

  6. docker run busybox date
    

配置身份验证

在推送或拉取映像之前,您必须将 Docker 配置为使用 Google Cloud CLI 来对发送到 Container Registry 的请求进行身份验证。

运行以下命令:

gcloud auth configure-docker

该命令会更新 Docker 配置。您现在可以连接 Google Cloud 项目中的 Container Registry 以推送和拉取映像。

获取要推送的图片

在本快速入门中,您将推送名为 hello-app 的示例映像。

  1. 切换到要在其中保存映像的目录
  2. 运行以下命令以拉取映像的 1.0 版。

    docker pull gcr.io/google-samples/hello-app:1.0
    

将映像添加到 Container Registry

如需将映像添加到 Container Registry,请对其进行标记,然后将其推送到注册表。

使用注册表名称标记映像

使用注册表名称标记 Docker 映像,会将 docker push 命令配置为将该映像推送到特定位置。在本快速入门中,主机位置为 gcr.io

运行以下命令,将映像标记为 quickstart-image:tag1

docker tag gcr.io/google-samples/hello-app:1.0 gcr.io/PROJECT_ID/quickstart-image:tag1

替换以下内容:

  • PROJECT-ID 是您的 Google Cloud Console 项目 ID,您需要将此 ID 添加到命令中。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目
  • gcr.io 是主机名
  • quickstart-image 是 Docker 映像的名称
  • tag1 是您要添加到 Docker 映像的标记。如果您没有指定标记,Docker 将应用默认标记 latest

您现在可以将映像推送到 Container Registry。

将映像推送到 Container Registry

配置身份验证并标记本地映像后,您可以将该映像推送到您创建的代码库。

如需推送 Docker 映像,请运行以下命令:

docker push gcr.io/PROJECT_ID/quickstart-image:tag1

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

当您将映像推送到新的主机位置时,该服务会创建您的项目独有的底层存储分区。您可以通过 Cloud Console 查看 Container Registry 托管的映像,也可以通过网络浏览器访问映像的注册表名称 http://gcr.io/PROJECT_ID/quickstart-image 来查看映像。

从 Container Registry 中拉取映像

如需将映像从 Container Registry 拉取到本地机器,请运行以下命令:

docker pull gcr.io/PROJECT_ID/quickstart-image:tag1

PROJECT_ID 替换为您的 Google Cloud Console 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目

您应该会看到类似如下所示的输出:

latest: Pulling from my-project/quickstart-image:tag1
Digest: sha256:70c42...
Status: Image is up to date for gcr.io/my-project/quickstart-image:tag1

清理

为避免系统因本页面使用的资源向您的 Google Cloud 帐号收取费用,请按照以下步骤操作。

运行以下命令以从 Container Registry 中删除 Docker 映像。

gcloud container images delete gcr.io/PROJECT_ID/quickstart-image:tag1 --force-delete-tags

PROJECT_ID 替换为您的 Google Cloud Console 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目

后续步骤