使用 Cloud Build 构建和推送 Docker 映像

了解如何通过构建 Docker 映像并将映像推送到 Artifact Registry 来开始使用 Cloud Build。Artifact Registry 提供用于管理私有软件包和 Docker 容器映像的单个位置。

您首先使用 Docker 配置文件 Dockerfile 构建映像,然后使用 Cloud Build 配置文件构建相同的映像。


如需遵循有关此任务的分步指导,请直接在 Cloud Shell Editor 中点击操作演示

操作演示


准备工作

  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 Cloud Build and Artifact Registry APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  9. Enable the Cloud Build and Artifact Registry APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init

准备源文件以进行构建

您需要一些示例源代码来打包到容器映像中。在此部分,您将创建一个简单的 shell 脚本和 DockerfileDockerfile 是文本文档,其中有 Docker 如何构建映像的说明。

  1. 打开一个终端窗口。

  2. 创建名为 quickstart-docker 的新目录并导航至该目录:

    mkdir quickstart-docker
    cd quickstart-docker
    
  3. 创建名为 quickstart.sh 且包含以下内容的文件:

    echo "Hello, world! The time is $(date)."
  4. 创建名为 Dockerfile 且包含以下内容的文件:

    FROM alpine
    COPY quickstart.sh /
    CMD ["/quickstart.sh"]
  5. 在终端窗口中运行以下命令,使 quickstart.sh 成为可执行文件:

    chmod +x quickstart.sh
    

在 Artifact Registry 中创建 Docker 代码库

  1. 在位置 us-west2 中新建一个名为 quickstart-docker-repo 且说明文字为“Docker repository”(Docker 代码库)的 Docker 代码库:

    gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \
        --location=us-west2 --description="Docker repository"
    
  2. 验证您的代码库已创建:

    gcloud artifacts repositories list
    

    您会在显示的代码库列表中看到 quickstart-docker-repo

使用 Dockerfile 构建映像

Cloud Build 允许您使用 Dockerfile 构建 Docker 映像。您不需要单独的 Cloud Build 配置文件。

如需使用 Dockerfile 构建,请执行以下操作:

  1. 通过运行以下命令获取您的 Google Cloud 项目 ID:

    gcloud config get-value project
    
  2. 从包含 quickstart.shDockerfile:

    gcloud builds submit --region=us-west2 --tag us-west2-docker.pkg.dev/project-id/quickstart-docker-repo/quickstart-image:tag1
    

构建完成后,您将看到类似于以下内容的输出:

DONE
------------------------------------------------------------------------------------------------------------------------------------
ID                                    CREATE_TIME                DURATION  SOURCE   IMAGES     STATUS
545cb89c-f7a4-4652-8f63-579ac974be2e  2020-11-05T18:16:04+00:00  16S       gs://gcb-docs-project_cloudbuild/source/1604600163.528729-b70741b0f2d0449d8635aa22893258fe.tgz  us-west2-docker.pkg.dev/gcb-docs-project/quickstart-docker-repo/quickstart-image:tag1  SUCCESS

您刚刚使用 Dockerfile 构建了一个名为 quickstart-image 的 Docker 映像,并将该映像推送到了 Artifact Registry。

使用构建配置文件构建映像

在此部分,您将使用 Cloud Build 配置文件构建与上文相同的 Docker 映像。构建配置文件会指示 Cloud Build 根据您的规范执行任务。

  1. 在包含 quickstart.shDockerfile 的同一目录中,创建名为 cloudbuild.yaml 且包含以下内容的文件。此文件是您的构建配置文件。构建时,Cloud Build 会自动将 $PROJECT_ID 替换为您的项目 ID。

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      script: |
        docker build -t us-west2-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1 .
      automapSubstitutions: true
    images:
    - 'us-west2-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1'
  2. 通过运行以下命令启动构建:

    gcloud builds submit --region=us-west2 --config cloudbuild.yaml
    

构建完成后,您将看到类似于以下内容的输出:

DONE
------------------------------------------------------------------------------------------------------------------------------------
ID                                    CREATE_TIME                DURATION  SOURCE          IMAGES          STATUS
046ddd31-3670-4771-9336-8919e7098b11  2020-11-05T18:24:02+00:00  15S       gs://gcb-docs-project_cloudbuild/source/1604600641.576884-8153be22c94d438aa86c78abf11403eb.tgz  us-west2-docker.pkg.dev/gcb-docs-project/quickstart-docker-repo/quickstart-image:tag1  SUCCESS

您刚刚使用构建配置文件构建了 quickstart-image 并将该映像推送到了 Artifact Registry。

查看构建详情

  1. 打开 Google Cloud 控制台中的 Cloud Build 页面。

    打开 Cloud Build 页面

  2. 选择您的项目,然后点击打开

    您将看到构建记录页面:

    构建记录页面的屏幕截图

  3. 区域下拉菜单中,选择 us-west2 以查看该区域中的 build。

  4. 点击特定构建。

    您将看到构建详情页面。

  5. 如需查看构建的工件,请点击构建摘要下的构建工件

    您将看到类似于以下内容的输出:

    构建工件的屏幕截图

    您可以从此页下载您的构建日志,并查看 Artifact Registry 中映像的详情。

清理

为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。

  1. 在 Google Cloud 控制台中打开 Artifact Registry 页面。

    打开 Artifact Registry 页面

  2. 选择您的项目,然后点击打开

  3. 选择 quickstart-docker-repo

  4. 点击删除

您现在已经删除了在此快速入门中创建的代码库。

后续步骤