Repolode
moby

moby/buildkit

一个并发、缓存高效的构建工具包,可将源码转换为构建产物,是 Docker 构建所使用的底层引擎。

Star
10,377
Fork
1,565
未关闭 Issue
835
最近提交
昨天

这是什么?

BuildKit 是一个把源代码转换为构建产物的工具包,目标是高效、可表达、可重复地完成构建。它由 buildkitd 守护进程和 buildctl 客户端组成,构建过程使用名为 LLB 的二进制中间格式描述依赖图,因此互不依赖的步骤可以并发执行,并且可以逐条指令缓存结果。

BuildKit 不绑定 Dockerfile。Dockerfile 支持由前端(frontend)提供,其他构建语言如 YAML、Starlark 或基于 Python 的定义也可以实现为前端。产物可以输出到镜像仓库、containerd 镜像存储、本地目录,以及 Docker、OCI 或 tar 格式。缓存支持通过内联元数据、镜像仓库、本地目录、GitHub Actions、S3 和 Azure Blob Storage 导入导出。

守护进程支持 OCI(runc)和 containerd 两种 worker,可以在非 root 权限下运行,gRPC 接口可通过 Unix socket 或带 mTLS 的 TCP 暴露。Docker Buildx 和 Docker Engine 都基于它构建镜像。

核心功能

  • 01基于 LLB 依赖图并发执行互不依赖的构建步骤
  • 02指令级构建缓存,可导入导出到镜像仓库、本地目录、GitHub Actions、S3 和 Azure Blob Storage
  • 03可插拔前端,支持 Dockerfile 以及基于 gateway 的外部前端
  • 04多种输出格式:镜像仓库、containerd 镜像存储、本地文件、Docker、OCI 和 tar
  • 05支持多平台构建和无 root 权限运行
  • 06自动回收构建缓存

适用场景

  • 在 Linux 服务器或 Kubernetes 集群中运行独立的构建守护进程
  • 在 CI 流水线中通过镜像仓库或 S3 共享缓存来构建容器镜像
  • 基于 LLB 为非 Dockerfile 工作流定义自定义构建语言
  • 输出测试报告、二进制文件等本地构建产物,而非容器镜像

快速上手

  1. 1

    从发布页面下载最新二进制文件

  2. 2

    在 Linux 上以 root 身份启动 buildkitd 守护进程

    sudo buildkitd
  3. 3

    使用 dockerfile.v0 前端通过 buildctl 构建 Dockerfile

    buildctl build --frontend=dockerfile.v0 --local context=. --local dockerfile=.

使用前须知

  • buildkitd 守护进程仅支持 Linux 和 Windows,不支持 macOS。
  • 启动守护进程通常需要 root 权限,无根模式需要额外配置。
  • macOS 的 Homebrew 配方是非官方版本,且不包含守护进程。

收录于专题

标签

常见问题

buildkit 是什么?
一个并发、缓存高效的构建工具包,可将源码转换为构建产物,是 Docker 构建所使用的底层引擎。 BuildKit 是一个把源代码转换为构建产物的工具包,目标是高效、可表达、可重复地完成构建。它由 buildkitd 守护进程和 buildctl 客户端组成,构建过程使用名为 LLB 的二进制中间格式描述依赖图,因此互不依赖的步骤可以并发执行,并且可以逐条指令缓存结果。
buildkit 可以免费使用吗?用的什么许可证?
buildkit 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
buildkit 还在维护吗?
活跃维护中。buildkit 最近一次提交是在 2026年11月6日。
buildkit 适合用来做什么?
在 Linux 服务器或 Kubernetes 集群中运行独立的构建守护进程 在 CI 流水线中通过镜像仓库或 S3 共享缓存来构建容器镜像 基于 LLB 为非 Dockerfile 工作流定义自定义构建语言 输出测试报告、二进制文件等本地构建产物,而非容器镜像
buildkit 怎么安装和运行?
从发布页面下载最新二进制文件 在 Linux 上以 root 身份启动 buildkitd 守护进程: sudo buildkitd 使用 dockerfile.v0 前端通过 buildctl 构建 Dockerfile: buildctl build --frontend=dockerfile.v0 --local context=. --local dockerfile=.
在哪里获取 buildkit?
源代码和安装说明在 GitHub 上:https://github.com/moby/buildkit

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目