本文使用 Apple silicon 的 Arm 架构 Mac(M1、M2 等),对于 x86 的 Windows 应该也适用。
请确保已经安装 Docker
Buildx 配置
Buildx 默认使用 docker driver 的驱动器,不支持多架构构建[1],但是我们可以创建一个 docker-container driver 的驱动器来实现多架构构建。
# Shell
# 创建一个新的构建器
docker buildx create \
--name multiarch-builder \
--driver docker-container
# 切换使用这个构建器
docker buildx use multiarch-builder
# 启动构建器
docker buildx inspect --bootstrap
构建镜像
使用 Buildx 构建时,不需要对原有的 Dockerfile 做任何修改,直接使用 buildx 构建并且指定平台即可
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t <镜像tag> \
--push \
.
上面的参数中添加了–push,因为 docker-container driver 的构建器需要显式指定执行的操作。--push 构建完以后直接推送。如果打包多平台,直接加上这个参数推送即可。--load 构建完以后加载到本地 Docker 镜像中。如果打包了多平台,不能使用 load。--output 不常用,指定镜像输出方式。
使用 buildx 指定了多个架构打包以后,会把不同架构的镜像放在一个 manifest 里,拉取的时候直接使用你的 tag 就可以了。Docker 会拉取的时候自己决定具体拉取的是哪一个镜像