【AI】Docker Buildx 多架构构建配置
Docker 安装完成后,如果需要同时构建 amd64 和 arm64 镜像,可以使用 Buildx。
1. 安装 QEMU
如果当前机器是 x86,但需要构建 ARM 镜像,需要先安装 QEMU:
docker run --privileged --rm tonistiigi/binfmt --install all
2. 配置 BuildKit 镜像加速
使用 docker-container 类型的 Buildx Builder 时,BuildKit 是独立容器,不会直接使用 /etc/docker/daemon.json 中的镜像加速配置。
创建配置文件:
mkdir -p /etc/buildkit
vi /etc/buildkit/buildkitd.toml
内容:
[registry."docker.io"]
mirrors = ["你的镜像加速地址"]
例如:
[registry."docker.io"]
mirrors = ["docker-mirror.example.com"]
3. 创建 multiarch-builder
docker buildx create \
--name multiarch-builder \
--driver docker-container \
--buildkitd-config /etc/buildkit/buildkitd.toml \
--use
初始化:
docker buildx inspect --bootstrap
查看:
docker buildx ls
如果看到支持:
linux/amd64
linux/arm64
说明配置完成。
4. 多架构构建
同时构建 AMD64 和 ARM64:
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t registry.example.com/myapp:latest \
--push \
.
多架构镜像通常直接使用 --push 推送到镜像仓库。
如果只构建当前平台并加载到本地 Docker:
docker buildx build \
--platform linux/amd64 \
-t myapp:latest \
--load \
.
5. Buildx 缓存
docker-container 类型的 Builder 有自己独立的 BuildKit 构建缓存。
查看缓存:
docker buildx du --builder multiarch-builder
清理缓存:
docker buildx prune --builder multiarch-builder -a -f
如果整个 Builder 都不需要了:
docker buildx rm multiarch-builder
6. 常用命令
查看 Builder:
docker buildx ls
切换到多架构 Builder:
docker buildx use multiarch-builder
切回默认 Builder:
docker buildx use default
查看多架构镜像:
docker buildx imagetools inspect registry.example.com/myapp:latest
注意
使用:
driver = docker-container
时,BuildKit 是独立运行的,因此:
- Docker 本地已经存在的
nginx:latest不代表 Buildx 一定直接使用 /etc/docker/daemon.json的registry-mirrors不等于 BuildKit 的镜像加速配置- Buildx 有自己独立的构建缓存
- 多架构构建时仍可能需要访问镜像仓库获取不同架构的 manifest
因此建议分别维护:
Docker Engine -> /etc/docker/daemon.json
BuildKit -> /etc/buildkit/buildkitd.toml
输了你,赢了世界又如何...

浙公网安备 33010602011771号