arrow_back

使用 Cloud Build

登录 加入
访问 700 多个实验和课程

使用 Cloud Build

实验 1 小时 universal_currency_alt 5 个积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

概览

在本实验中,您将使用 Cloud Build 基于提供的代码和 Dockerfile 构建一个 Docker 容器映像,然后将容器上传到 Artifact Registry。

目标

在本实验中,您将学习如何执行以下任务:

  • 使用 Cloud Build 构建和推送容器
  • 使用 Artifact Registry 存储和部署容器

实验设置

访问实验

对于每个实验,您都会免费获得一个新的 Google Cloud 项目及一组资源,它们都有固定的使用时限。

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:

    • 打开 Google Cloud 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示登录页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在实验详细信息面板中找到用户名

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在实验详细信息面板中找到密码

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需查看列有 Google Cloud 产品和服务的菜单,请点击左上角的导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标

完成初始登录步骤后,项目信息中心将会打开。

激活 Google Cloud Shell

Google Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。

Google Cloud Shell 提供了可用于访问您的 Google Cloud 资源的命令行工具。

  1. 在 Cloud 控制台右上角的工具栏中,点击“打开 Cloud Shell”按钮。

    突出显示的 Cloud Shell 图标

  2. 点击继续

预配并连接到环境需要一些时间。如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 PROJECT_ID。例如:

在 Cloud Shell 终端中突出显示的项目 ID

gcloud 是 Google Cloud 的命令行工具。它会预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  • 您可以通过以下命令列出有效的账号名称:
gcloud auth list

输出:

Credentialed accounts: - @.com (active)

输出示例

Credentialed accounts: - google1623327_student@qwiklabs.net
  • 您可以通过以下命令列出项目 ID:
gcloud config list project

输出:

[core] project =

输出示例

[core] project = qwiklabs-gcp-44776a13dea667a6 注意:有关 gcloud 的完整文档,请参阅 gcloud CLI 概览指南

任务 1. 确认已启用所需的 API

  1. 记录您的 Google Cloud 项目名称。该值显示在 Google Cloud 控制台的顶部栏中。其格式为:qwiklabs-gcp- 后跟若干十六进制数字。

  2. 在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,点击 API 和服务

  3. 点击媒体库

  4. 搜索 API 和服务框中输入 Cloud Build

  5. 在 Cloud Build API 的搜索结果卡片中,如果未看到确认 Cloud Build API 已启用的消息,请点击启用按钮。

  6. 点击返回按钮,返回之前显示搜索框的屏幕。在搜索框中,输入 Artifact Registry

  7. 在 Google Artifact Registry API 的搜索结果卡片中,如果未看到确认 Artifact Registry API 已启用的消息,请点击启用按钮。

任务 2. 使用 DockerFile 和 Cloud Build 构建容器

您可以编写 build 配置文件,指示 Cloud Build 在构建容器时执行哪些任务。这些 build 文件可以提取依赖项、运行单元测试和分析等。在此项任务中,您将创建一个 DockerFile,然后将其用作 Cloud Build 的 build 配置脚本。您还将创建简单的 Shell 脚本 (quickstart.sh),用于表示容器内的应用。

  1. 在 Google Cloud 控制台标题栏中,点击激活 Cloud Shell

  2. 出现提示时,点击授权

Cloud Shell 会在 Google Cloud 控制台窗口底部打开。

  1. 使用 Nano 文本编辑器创建空白的 quickstart.sh 文件:
nano quickstart.sh
  1. 将以下代码行添加到 quickstart.sh 文件中:
#!/bin/sh echo "Hello, world! The time is $(date)."
  1. 按 CTRL+X 键保存文件并关闭 Nano,然后依次按 Y 和 Enter 键。

  2. 使用 Nano 文本编辑器创建空白的 Dockerfile 文件:

nano Dockerfile
  1. 添加如下 Dockerfile 命令:
FROM alpine

此命令指示 build 使用 Alpine Linux 基础映像。

  1. 将如下 Dockerfile 命令添加到 Dockerfile 文件末尾:
COPY quickstart.sh /

此命令会将 quickstart.sh 脚本添加到映像中的 / 目录。

  1. 将如下 Dockerfile 命令添加到 Dockerfile 文件末尾:
CMD ["/quickstart.sh"]

此命令会将映像配置为在创建和运行关联容器时执行 /quickstart.sh 脚本。

Dockerfile 的内容现在应如下所示:

FROM alpine COPY quickstart.sh / CMD ["/quickstart.sh"]
  1. 按 CTRL+X 键保存文件并关闭 Nano,然后依次按 Y 和 Enter 键。

  2. 在 Cloud Shell 中运行以下命令,使 quickstart.sh 脚本可执行:

chmod +x quickstart.sh
  1. 在位置 中新建一个名为 quickstart-docker-repo 且说明文本为“Docker 仓库”的 Docker 仓库
gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \ --location={{{project_0.default_region | "REGION"}}} --description="Docker 仓库"
  1. 在 Cloud Shell 中运行以下命令,以在 Cloud Build 中构建 Docker 容器映像:
gcloud builds submit --tag {{{project_0.default_region | "REGION"}}}-docker.pkg.dev/${DEVSHELL_PROJECT_ID}/quickstart-docker-repo/quickstart-image:tag1

当构建命令完成时,您的 Docker 映像会构建完毕并推送到 Artifact Registry。

  1. 在 Google Cloud 控制台的搜索栏(位于控制台窗口顶部)中搜索 Artifact Registry
注意:如果您没有看到搜索框,请点击放大镜图标。 注意:您可能会看到一条弹出式消息,内容为“如果此时离开,系统将重置您的视图”。点击知道了按钮即可继续。
  1. 点击名为 quickstart-docker-repo 的仓库。

quickstart-image Docker 映像会显示在列表中。

任务 3. 使用 build 配置文件和 Cloud Build 构建容器

Cloud Build 还支持自定义 build 配置文件。在此项任务中,您将通过 Cloud Build 使用 YAML 格式的自定义 build 文件整合现有的 Docker 容器。

我们来创建一个名为 cloudbuild.yaml 的示例自定义 Cloud Build 配置文件。

  1. 使用以下命令,通过 nano 创建并打开名为 cloudbuild.yaml 的文件:
nano cloudbuild.yaml
  1. 打开 nano 后,将以下内容粘贴到 cloudbuild.yaml 文件中:
steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', 'YourRegionHere-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1', '.' ] images: - 'YourRegionHere-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1'
  1. Ctrl+O 组合键,然后按 Enter 键,保存编辑好的文件。

  2. Ctrl+X 组合键,退出 nano 文本编辑器。

  3. 运行以下命令以设置区域变量,并将该值插入到 yaml 文件中。

export REGION={{{project_0.default_region | "REGION"}}} sed -i "s/YourRegionHere/$REGION/g" cloudbuild.yaml
  1. 在 Cloud Shell 中执行以下命令,查看 cloudbuild.yaml 的内容:
cat cloudbuild.yaml

您将会看到以下输出:

steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', '{{{project_0.default_region | "REGION"}}}-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1', '.' ] images: - '{{{project_0.default_region | "REGION"}}}-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1'

此文件指示 Cloud Build 使用 Docker 基于当前本地目录中的 Dockerfile 规范构建映像,并使用 gcr.io/$PROJECT_ID/quickstart-image$PROJECT_ID 是一个替代变量,Cloud Build 会使用关联项目的 ID 自动填充其值)标记该映像,然后将其推送到 Artifact Registry。

  1. 在 Cloud Shell 中执行以下命令,使用 cloudbuild.yaml 作为 build 配置文件启动 Cloud Build:
gcloud builds submit --config cloudbuild.yaml

Cloud Shell 中的 build 输出应该与之前相同。当构建命令完成时,该映像的新版本会推送到 Artifact Registry。

  1. 在 Google Cloud 控制台的搜索栏(位于控制台窗口顶部)中搜索 Artifact Registry

  2. 在搜索结果中,点击 Artifact Registry

  3. 点击名为 quickstart-docker-repo > quickstart-image 的仓库。

列表中现在有两个版本的 quickstart-image

点击检查我的进度以验证是否完成了以下目标: 在 Cloud Build 中构建两个容器映像

  1. 在 Google Cloud 控制台的搜索栏(位于控制台窗口顶部)中,搜索 Cloud Build

  2. 在搜索结果中,点击 Cloud Build

  3. Cloud Build 中,点击历史记录。列表中会显示两个 build。

  4. 点击列表顶部 build 的 ID。 该 build 的详细信息(包括 build 日志)即会显示。

任务 4. 使用 build 配置文件和 Cloud Build 构建并测试容器

自定义 build 配置文件的真正强大之处在于,它们不仅仅只是构建容器,还能并行或依序执行其他操作:在新构建的容器上运行测试、将这些容器推送到各个目的地,甚至还可以将它们部署到 Kubernetes Engine。

在本任务中,我们会看到一个简单的示例:一个 build 配置文件会测试它构建的容器并将结果报告给调用它的环境。第一步是更改 quickstart.sh 文件。

  1. 在 Cloud Shell 中,使用 nano 打开 quickstart.sh

    nano quickstart.sh
  2. 将现有内容替换为以下内容:

#!/bin/sh if [ -z "$1" ] then echo "Hello, world! The time is $(date)." exit 0 else exit 1 fi
  1. Ctrl+O 组合键,然后按 Enter 键,保存编辑好的文件。

  2. Ctrl+X 组合键,退出 nano 文本编辑器。

我们来新建一个新的自定义 Cloud Build 配置文件,名为 cloudbuild2.yaml。这次代码略有修改,以便展示 Cloud Build 能够测试它所构建的容器。

  1. 使用以下命令,通过 nano 创建并打开名为 cloudbuild2.yaml 的文件:
nano cloudbuild2.yaml
  1. 打开 nano 后,将以下内容粘贴到 cloudbuild2.yaml 文件中:
steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', 'YourRegionHere-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1', '.' ] - name: 'YourRegionHere-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1' args: ['fail'] images: - 'YourRegionHere-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1'
  1. Ctrl+O 组合键,然后按 Enter 键,保存编辑好的文件。

  2. Ctrl+X 组合键,退出 nano 文本编辑器。

  3. 运行以下命令,将区域值插入此 yaml 文件中。

sed -i "s/YourRegionHere/$REGION/g" cloudbuild2.yaml
  1. 在 Cloud Shell 中执行以下命令,查看 cloudbuild2.yaml 的内容:
cat cloudbuild2.yaml

您将会看到以下输出:

steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', '{{{project_0.default_region | "REGION"}}}-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1', '.' ] - name: 'gcr.io/$PROJECT_ID/quickstart-image' args: ['fail'] images: - '{{{project_0.default_region | "REGION"}}}-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1'

除了上面所述的操作外,这个 build 配置文件还会运行它创建的 quickstart-image。在此任务中,quickstart.sh 脚本经过了修改,会在参数 ['fail'] 传递给它时模拟测试失败。

  1. 在 Cloud Shell 中执行以下命令,使用 cloudbuild.yaml 作为 build 配置文件启动 Cloud Build:
gcloud builds submit --config cloudbuild2.yaml

您会看到以如下文本结尾的命令输出:

输出

BUILD FAILURE: Build step failure: build step 1 "us-east1-docker.pkg.dev/qwiklabs-gcp-02-1c7ba5c697a0/quickstart-docker-repo/quickstart-image:tag1" failed: starting step container failed: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "fail": executable file not found in $PATH: unknown ERROR: (gcloud.builds.submit) build 96c4a454-be06-4010-aa7c-da57c14165f4 completed with status "FAILURE"
  1. 确认您的命令 Shell 知道构建失败:
echo $?

该命令将返回一个非零值。如果您将此 build 嵌入到脚本中,那么脚本将能够在构建失败时做出响应。

点击检查我的进度以验证是否完成了以下目标: 使用 build 配置文件和 Cloud Build 构建并测试容器

结束实验

完成实验后,请点击结束实验。Google Cloud Skills Boost 会移除您使用过的资源并为您清理帐号。

系统会提示您为实验体验评分。请选择相应的星级数,输入评论,然后点击提交

星级数的含义如下:

  • 1 颗星 = 非常不满意
  • 2 颗星 = 不满意
  • 3 颗星 = 一般
  • 4 颗星 = 满意
  • 5 颗星 = 非常满意

如果您不想提供反馈,可以关闭该对话框。

如果要留言反馈、提出建议或做出更正,请使用支持标签页。

版权所有 2020 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。