扩展Docker镜像构建能力(多平台)之buildx

Docker Buildx 是Docker官方的CLI 插件,用于扩展 Docker 镜像构建能力,基于BuildKit构建引擎。


核心定位

  • 它是 docker build 的增强版(现代 Docker 中 docker build 实际底层已调用 Buildx)。
  • 提供完整的BuildKit 功能支持,同时保持与传统 docker build 相似的用户体验。
  • 支持创建和管理多个隔离的builder 实例,可并发构建、跨平台构建等高级场景。

主要特性

  • 多平台镜像构建:一次命令可构建 linux/amd64、linux/arm64 等多个架构的镜像(manifest list)。

  • 多种构建驱动(drivers):

    • docker(默认,使用 Docker 引擎)
    • docker-container(在独立容器中运行 BuildKit)
    • kubernetes
    • remote
    • cloud(Docker Build Cloud,较新支持)
  • 高级输出与缓存:支持导出到 registry、OCI tarball、本地目录等;内联缓存、分布式缓存。

  • Bake:高级批量构建工具(类似 Makefile),支持 HCL/JSON/Compose 定义,可并行构建多个目标。

  • 其他:构建策略(policy)、调试(DAP)、镜像工具(imagetools)、磁盘使用管理等。

安装

buildx: https://github.com/docker/buildx/releases

  • Windows / macOS:Docker Desktop 已内置。
  • Linux:安装 docker-buildx-plugin 包(官方 Docker 仓库)。
    • 手动下载:从 GitHub Releases 获取二进制,放到 ~/.docker/cli-plugins/(或系统级路径)。
    • 也可从源码构建或通过 Dockerfile 安装。

要求 Docker Engine ≥ 19.03

基本用法

1
2
3
4
5
6
7
8
9
# 1.普通构建
docker buildx build .

# 2.创建并使用新builder
docker buildx create --name mybuilder --use
docker buildx build --platform linux/amd64,linux/arm64 -t myimage:latest --push .

# 3.Bake 批量构建
docker buildx bake