Docker 构建概述

Docker Build 实现客户端-服务器架构,其中:

  • 客户端:Buildx 是用于运行和管理构建的客户端和用户界面。
  • 服务器:BuildKit 是处理构建执行的服务器或构建器。

当您调用构建时,Buildx 客户端会向 BuildKit 后端。BuildKit 解析构建指令并执行 构建步骤。构建输出将发送回客户端或上传到 注册表,例如 Docker Hub。

Buildx 和 BuildKit 都安装了 Docker Desktop 和 Docker Engine 开箱即用。调用该命令时,您使用的是 Buildx 以使用与 Docker 捆绑的默认 BuildKit 运行构建。docker build

构建

Buildx 是用于运行构建的 CLI 工具。命令 是 Buildx 的包装器。当你调用 时,Buildx 会解释 构建选项,并向 BuildKit 后端发送构建请求。docker builddocker build

Buildx 客户端不仅可以运行构建,还可以做更多的事情。你也可以使用 Buildx 来 创建和管理 BuildKit 后端,称为构建器。它还支持 用于管理 Registry 中的镜像和运行多个构建的功能 同时。

默认情况下,Docker Buildx 与 Docker Desktop 一起安装。您还可以构建 从源码获取 CLI 插件,或者从 GitHub 存储库中获取二进制文件,然后 手动安装它。有关更多信息,请参阅 GitHub 上的 Buildx README

构建套件

BuildKit 是执行构建工作负载的守护进程。

构建执行从调用命令开始。 Buildx 解释你的构建命令并向 BuildKit 发送构建请求 backend 的构建请求包括:docker build

  • The Dockerfile
  • 构建参数
  • 导出选项
  • 缓存选项

BuildKit 解析构建指令并执行构建步骤。而 BuildKit 正在执行构建,Buildx 监控构建状态并打印 到终端的进度。

如果生成需要来自客户端的资源,例如本地文件或 Build secrets,则 BuildKit 会向 Buildx 请求所需的资源。

这是 BuildKit 比旧版 BuildKit 更高效的一种方式 builder 的 Docker 版本。BuildKit 仅请求 构建在需要时需要的资源。旧版构建器,在 比较,则始终获取本地文件系统的副本。

BuildKit 可以向 Buildx 请求的资源示例包括:

  • 本地文件系统构建上下文
  • 构建密钥
  • SSH 套接字
  • 注册表身份验证令牌

有关 BuildKit 的更多信息,请参见 BuildKit