










Docker 安装完成后,如果需要同时构建 amd64 和 arm64 镜像,可以使用 Buildx。
如果当前机器是 x86,但需要构建 ARM 镜像,需要先安装 QEMU:
docker run --privileged --rm tonistiigi/binfmt --install all
使用 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"]
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
说明配置完成。
同时构建 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 \
.
docker-container 类型的 Builder 有自己独立的 BuildKit 构建缓存。
查看缓存:
docker buildx du --builder multiarch-builder
清理缓存:
docker buildx prune --builder multiarch-builder -a -f
如果整个 Builder 都不需要了:
docker buildx rm multiarch-builder
查看 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 是独立运行的,因此:
nginx:latest 不代表 Buildx 一定直接使用/etc/docker/daemon.json 的 registry-mirrors 不等于 BuildKit 的镜像加速配置因此建议分别维护:
Docker Engine -> /etc/docker/daemon.json
BuildKit -> /etc/buildkit/buildkitd.toml
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。