mac下开启docker buildx多平台构建
1.支持 multi-platform 的 builder
1 | docker buildx create --name multi --driver docker-container --use |
2.初始化
1 | docker buildx inspect --bootstrap |
再看一眼:
1 | docker buildx ls |
你应该会看到类似:
multi* docker-container
driver 变成 docker-container 才是正确状态。
3.构建
1 | docker buildx build \ |
注意:
- 多架构必须
--push - 或单架构用
--load
因为 multi-arch 生成的是 manifest list,本地 daemon 无法直接 load 两种架构。
你现在看到的 PLATFORMS:
linux/amd64, linux/arm64 ...
表示:
这个 daemon 可以运行这些架构的镜像(通过 QEMU)
但不代表:
它可以一次构建多个架构产物
构建能力取决于 driver,而不是 daemon。
结构对比一下:
构建过程状态
M1 arm64
↓
buildx (docker-container driver)
↓
BuildKit container
↓
QEMU
↓
multi-arch manifest
当 driver 变成 docker-container,你就进入真正的跨架构构建模式。