AIGC标识 【AI】Docker Buildx 多架构构建配置

Docker 安装完成后,如果需要同时构建 amd64arm64 镜像,可以使用 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.jsonregistry-mirrors 不等于 BuildKit 的镜像加速配置
  • Buildx 有自己独立的构建缓存
  • 多架构构建时仍可能需要访问镜像仓库获取不同架构的 manifest

因此建议分别维护:

Docker Engine -> /etc/docker/daemon.json
BuildKit      -> /etc/buildkit/buildkitd.toml
posted @ 2026-08-12 15:12  不是豆豆  阅读(10)  评论(0)    收藏  举报
友情链接:迷途