Container Registry 快速入门

Container Registry 是一个在 Google Cloud 上运行的私有容器映像注册表。

本快速入门向您展示了如何执行以下操作:

  • 构建 Docker 映像
  • 将映像推送到项目的 Container Registry
  • 从项目的 Container Registry 中拉取映像

准备工作

  1. 登录您的 Google 帐号。

    如果您还没有 Google 帐号,请注册一个新帐号

  2. 在 Cloud Console 的项目选择器页面上,选择或创建 Cloud 项目。

    转到项目选择器页面

  3. 确保您的 Google Cloud 项目已启用结算功能。 了解如何确认您的项目已启用结算功能

  4. 启用 Container Registry API。

    启用 API

  5. 安装并初始化 Cloud SDK
  6. 安装 Docker。如果您使用的是基于 Linux 的操作系统(例如 Ubuntu 或 Debian),请将您的用户名添加到 docker 群组,这样您就可以在不使用 sudo 的情况下运行 Docker:
    sudo usermod -a -G docker ${USER}

    退出并重新登录以使群组成员资格变更生效。如果您使用的是虚拟机,则可能需要重启虚拟机才能使成员资格变更生效。

  7. 打开 Docker。若要确保 Docker 正在运行,请运行以下 Docker 命令,该命令返回当前时间和日期:
  8. docker run busybox date

在本快速入门中,您可以使用 Cloud Shell 或任何安装了 Cloud SDK 的环境。

构建 Docker 映像

在本快速入门中,您需要构建以下 Docker 映像,以便有一个可以推送到 Container Registry 的映像。此 Docker 映像包含一个小型 Python Web 应用。该应用使用 Flask Web 框架来呈现显示“Hello, World!”消息的网页

为创建 Docker 映像,请执行以下操作:

  1. 创建一个用于存储三个 Docker 映像文件的目录。

  2. 在此目录中,创建 Dockerfilerequirements.txtapp.py 这三个文件。请参阅以下示例,了解您将需要在每个文件的内容中提供哪些信息:

Dockerfile

# The file Dockerfile defines the image's environment
# Import Python runtime and set up working directory
FROM python:3.5-slim
WORKDIR /app
ADD . /app

# Install any necessary dependencies
RUN pip install -r requirements.txt

# Open port 80 for serving the webpage
EXPOSE 80

# Run app.py when the container launches
CMD ["python", "app.py"]

requirements.txt

# The file requirements.txt defines the image's dependencies
Flask

app.py

# The Docker image contains the following code in app.py
from flask import Flask
import os
import socket

app = Flask(__name__)

@app.route("/")
def hello():
    html = "<h3>Hello, World!</h3>"
    return html

if __name__ == "__main__":
  app.run(host='0.0.0.0', port=80)

如需构建 Docker 映像,请从包含映像文件的目录运行以下 Docker 命令:

docker build -t quickstart-image .

现在,您已经在本地机器上创建了一个 Docker 映像。

将映像添加到 Container Registry

docker 配置为使用 gcloud 命令行工具作为凭据帮助程序

如需推送或拉取映像,您必须将 Docker 配置为使用 gcloud 命令行工具对向 Container Registry 发出的请求进行身份验证。为此,请运行以下命令(您只需要执行此操作一次):

gcloud auth configure-docker

使用注册表名称标记映像

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

如需标记 Docker 映像,请运行以下命令:

docker tag quickstart-image 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 配置为使用 gcloud 作为凭据帮助程序,并使用注册表名称标记本地映像后,您便可将该映像推送到 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 [PROJECT-ID]/quickstart-image:tag1
Digest: sha256:70c42...
Status: Image is up to date for gcr.io/[PROJECT-ID]/quickstart-image:tag1

清理

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

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

gcloud container images delete gcr.io/[PROJECT-ID]/quickstart-image:tag1 --force-delete-tags

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

后续步骤