Docker - 云构建



Docker 云构建是一种基于云的服务,旨在加速容器镜像的构建。它将构建工作负载从本地机器转移到远程 BuildKit 实例,利用云计算能力和共享缓存,从而显著缩短构建时间。这尤其有利于复杂的多平台构建以及开发人员团队,他们现在可以重用预构建镜像,从而提高协作效率和生产力。

Docker 云构建最显著的功能之一是其对多种架构的原生支持。因此,可以轻松地为各种芯片组创建应用程序,而无需遇到复杂的设置和模拟器。这通过加快构建速度和提高效率,使开发变得非常容易。

Docker 云构建的功能

以下是 Docker 云构建的一些突出功能,使其如此受欢迎和广泛使用:

功能 描述
远程 BuildKit 构建在云基础设施上运行,从而减轻本地机器的负载。
共享构建缓存 在构建之间重用之前构建的层,从而显着加快后续构建速度。
多平台构建 原生支持为多个架构(例如,amd64、arm64)构建镜像,无需使用模拟器。
自动构建优化 无需手动干预即可优化构建流程,提高构建效率。
云存储集成 轻松连接到 Amazon S3 等云存储提供商,实现无缝工件管理。
构建历史 跟踪和管理构建历史,以便更好地进行调试和分析。
安全 采用加密和访问控制来保护构建流程和工件。
可扩展性 根据构建需求动态扩展资源,确保一致的性能。
构建洞察 提供有关构建时间、成功率和资源利用率的详细分析。
Docker Hub 集成 与 Docker Hub 无缝集成,以便轻松推送和管理镜像。

Docker 云构建工作流程

Docker 云构建工作流程精简高效,旨在加快容器镜像构建过程。

  • 启动 - 开发人员使用所需的参数启动构建命令(例如,docker buildx build)。
  • 身份验证 - 安全的用户身份验证确保 Docker 云构建仅允许授权访问该服务。
  • 远程构建 - 它不是在本地机器上构建,而是将构建上下文发送到远程的基于云的 BuildKit 实例。这为更快的构建时间带来了更强大的云基础设施。
  • 缓存层 - Docker 云构建智能地使用共享构建缓存。如果缓存中已存在某个层,它将重用这些层以大大加快构建速度。
  • 构建执行 - 根据 Dockerfile 中的定义,使用 BuildKit 实例运行构建的阶段。这包括获取基础镜像、运行命令和创建新层。
  • 镜像创建 - Docker 云构建在成功执行其指令后,将创建最终的容器镜像。
  • 推送到仓库 - 生成的镜像将自动推送到容器仓库(如 Docker Hub)进行存储和共享。
  • 本地加载(可选) - 启用后,镜像将直接加载到本地 Docker 引擎中以立即使用。

Docker 云构建命令和示例

让我们看一下最重要的 Docker 云构建命令以及一些实用的示例,这些示例将帮助您顺利入门。

设置和管理构建器

Docker Buildx Create 命令

$ docker buildx create --use --name my-builder cloud-ORG-BUILDER_NAME

说明

此命令将创建一个名为 my-builder 的新构建器实例,然后将其连接到您组织内的 Docker 云构建构建器。如果您使用 --use 标志,它将将其设置为其余构建命令的默认构建器。

示例

$ docker buildx create --use --name my-cloud-builder cloud-myorg-builder-us-east-1

Docker Buildx List 命令

$ docker buildx ls

说明

此命令列出所有可用的构建器实例。这包括连接到 Docker 云构建的实例。它将帮助您识别您可以随时使用的构建器。

Docker Buildx Remove 命令

$ docker buildx rm my-builder

说明

上述命令将删除提到的构建器实例(在本例中为 my-builder)。您必须谨慎使用此命令,因为它会删除构建器的配置和缓存。

Docker Buildx Create Context 命令

$ docker context create my-cloud-context --docker "host=https://cloud.docker.com" --builder my-builder

说明

上述命令将创建一个名为 my-cloud-context 的新 Docker 上下文。它将配置为使用 Docker 云构建构建器 (my-builder)。此上下文可用于后续构建命令以定位云构建器。

构建镜像

Docker Buildx Build 命令

$ docker buildx build --builder my-builder --tag my-image 

说明

这是最基本的构建命令。它使用提到的构建器实例 (my-builder) 使用当前目录 (.) 中的 Dockerfile 构建镜像,并将生成的镜像标记为 my-image。

Docker Buildx 指定平台

$ docker buildx build --builder my-builder --platform linux/amd64,linux/arm64 --tag my-image --push .

说明

运行上述命令后,它将为 linux/amd64 和 linux/arm64 架构构建多平台镜像。构建完成后,镜像将自动推送到 Docker 配置中定义的仓库。

Docker Buildx 缓存层

$ docker buildx build --builder my-builder --cache-from type=registry,ref=my-registry/cache --cache-to type=registry,ref=my-registry/cache .

说明

当我们使用 –cache-from 标志时,它将允许通过从 my-registry/cache 中提取缓存层并将新层推回其中来进行高效构建。这将大大加快进一步的构建速度。

Docker Buildx 构建参数

$ docker buildx build --builder my-builder --build-arg VERSION=1.2.3 --tag my-image .

说明

您可以使用 –build-arg 选项将构建参数 (VERSION=1.2.3) 传递给 Dockerfile。这将允许您根据外部变量自定义构建过程。

Docker Buildx 指定 Dockerfile

$ docker buildx build --builder my-builder --file Dockerfile.prod --tag my-image .

说明

您可以通过使用 --file 选项指定 Dockerfile 的名称来使用特定的 Dockerfile。上述命令将使用名为 Dockerfile.prod 的特定 Dockerfile 进行构建,而不是默认的 Dockerfile。这对于拥有不同的构建配置很有用。

Docker Buildx 使用 Bake 文件

$ docker buildx bake --builder my-builder --file docker-bake.hcl

说明

如果要构建 Bake 文件 (docker-bake.hcl) 中定义的多个镜像,可以使用上述命令。Bake 文件提供了一种更好的方法来编排复杂的多服务构建。

检查和调试

$ docker buildx imagetools inspect my-image

说明

上述命令分析多平台镜像,提供有关每个包含平台的镜像配置和层的详细信息。

$ docker buildx imagetools create --tag my-new-image my-image --platform linux/arm64

说明

上述命令将从多平台镜像 (my-image) 中提取单个平台镜像(对于 linux/arm64)。然后将其标记为 my-new-image。这对于部署到特定架构很有用。

结论

Docker 云构建是一个重要的工具,它将通过简化和加速容器镜像的构建过程来帮助任何开发人员。它通过具有共享缓存的远程 BuildKit 实例大幅减少构建时间,这使其非常适合多平台和复杂项目。

关于 Docker 云构建的常见问题

1. 什么是 Docker 云构建?

Docker 云构建是一种旨在让开发人员安全地将 Docker 镜像构建卸载到云中的服务,以实现更好的构建性能和生产力。它消除了本地构建基础设施、资源和手动处理,这使得团队之间可以更有效地无缝协作,同时提供多平台镜像构建。

2. Docker 云构建如何提高构建速度?

Docker 云构建为镜像构建提供基于云的计算资源和共享缓存。使用此共享缓存保留来自先前构建的层,并减少了重新构建所有内容的需要。对加速时间的影响是巨大的。

3. 使用 Docker 云构建而不是本地构建有什么好处?

除了构建速度更快之外,Docker Build Cloud 还原生提供多架构构建,让您能够轻松地在各种不同的架构上构建镜像,而无需繁琐的配置。这有助于更流畅地管理构建缓存,并极大地增强了开发团队之间的协作。

4. 如何开始使用 Docker Build Cloud?

要开始使用,您需要一个 Docker ID 并注册 Docker Build Cloud。完成这些操作后,您可以设置 Docker Buildx CLI 插件,在云端配置您的构建器实例,并在远程构建 Docker 镜像。

广告

© . All rights reserved.