Container Registry 快速入门

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

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

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

准备工作

  1. 登录您的 Google 帐号。

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

  2. 在 GCP Console 中,转到管理资源页面,然后选择项目或创建项目。

    转到“管理资源”页面

  3. 确保您的 Google Cloud Platform 项目已启用结算功能。

    了解如何启用结算功能

  4. 启用Container Registry API。

    启用 API

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

    在将您自己添加到 docker 群组之后,您可能需要重新启动系统。

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

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

构建 Docker 映像

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

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

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

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

Dockerfile

# The Dockerfile defines the image's environment
# Import Python runtime and set up working directory
FROM python:2.7-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

# This file defines the image's dependencies
Flask

app.py

# The Docker image contains the following code
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 Platform Console 项目 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 Platform Console 项目 ID

当您将映像推送到新的主机位置时,该服务会为您的项目创建独有的底层存储分区。您可以通过 GCP 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 Platform Console 项目 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

清理

为避免系统因本快速入门中使用的资源向您的 GCP 帐号收取费用,请执行以下操作:

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

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

其中:

  • [PROJECT-ID] 是您的 Google Cloud Platform Console 项目 ID

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Container Registry