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 build
docker 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。