buildx 是什么
buildx 是随 Docker 一起分发的构建前端插件,负责管理「构建器实例」(builder),并把构建请求交给 BuildKit 执行。默认的 docker 驱动行为与老式 docker build 基本等价;换成 docker-container 驱动后可以跑多平台构建、导入导出构建缓存、使用 --mount 与 heredoc 等新语法。可以把构建器理解成一套可切换的构建环境配置,而不是一次性命令。
基本信息
| 核心命令 | docker buildx ls / create / use / inspect / rm / build / bake |
|---|---|
| 驱动类型 | docker(默认,单平台)/ docker-container(多平台与缓存导入导出)/ remote |
| 切换构建器 | docker buildx create --use 或 docker buildx use 名称 |
| 版本查看 | docker buildx version 与 docker buildx ls 中的星号 |
| 适用平台 | Linux、macOS、Windows(含 WSL2) |
典型使用场景
- 需要构建多平台镜像时创建 docker-container 驱动构建器
- CI 中用一个固定名称的构建器承载缓存,跨流水线复用
- 构建参数或语法不生效时,检查当前生效的构建器与前端版本
- 排查构建缓存行为差异,比对不同驱动下的层复用情况
- 临时释放资源:删掉长期不用的构建器容器
构建器生命周期示例
构建器生命周期示例
# 查看已有构建器,带 * 的才是当前默认
docker buildx ls
# 新建容器驱动构建器并切换为默认
docker buildx create --name multiarch --driver docker-container --use
# 初始化并显示驱动与能力(首次构建前建议跑一次)
docker buildx inspect --bootstrap
# 用完删除构建器实例(不影响已构建镜像)
docker buildx rm multiarch常用子命令对照
| 子命令 | 作用 | 典型时机 |
|---|---|---|
| ls | 列出构建器与当前默认项 | 构建行为异常先看这里 |
| create | 新建构建器,可指定驱动 | 需要多平台或缓存导入导出 |
| use | 切换当前默认构建器 | 同一台机器区分场景 |
| inspect | 查看驱动、平台、缓存状态 | 确认跨架构能力 |
| rm | 删除构建器实例 | 回收资源 |
| bake | 按声明文件批量构建 | 多镜像统一构建 |
docker-container 驱动会启动一个 BuildKit 容器,构建缓存默认存在该容器里;容器被删缓存也随之消失,长期使用应配置缓存导出或不要随手删构建器。
新版本 Docker 的 docker build 已默认走 BuildKit,但多平台、缓存导出、部分前端新语法仍需 buildx 搭配 docker-container 驱动。