跳转至

Dockerfile build 多架构镜像

使用 Dockerfile build 多架构镜像

docker buildx build --platform linux/amd64,linux/arm64 ...

这个命令要求 支持多平台的 builder,例如使用 docker-container driver 或开启 containerd image store.


✅ 解决方案:使用支持多平台的 Buildx Builder

方法一:创建一个新的 buildx builder(推荐)

# 创建一个新的 builder,并指定使用 docker-container 驱动
docker buildx create --use --name mybuilder --driver docker-container

# 启用 QEMU(支持跨平台构建)
docker run --rm --privileged tonistiigi/binfmt --install all

然后重新运行你的构建命令:

bash build-command.sh

这样你就可以构建 linux/amd64linux/arm64 的镜像.


方法二:只构建单平台镜像(临时避开)

如果你当前只是为了快速构建 amd64 或 arm64 任一平台的镜像,可以简化为:

# 只构建当前平台(比如 amd64)
docker build -t your-image-name .

或显式指定一个平台(仍需支持):

docker buildx build --platform linux/amd64 -t your-image-name .

⚠️ 如果你没有启用支持该平台的 QEMU,就不能跨平台构建.


🔍 检查当前 builder 状态

你可以使用以下命令查看当前的 builder 信息:

docker buildx ls

你会看到类似输出,判断是否是 docker-container 驱动:

NAME/NODE       DRIVER/ENDPOINT             STATUS   PLATFORMS
mybuilder *     docker-container

如果你看到的是:

default         docker                       linux/amd64

说明你正在使用默认不支持多平台构建的 driver.


✅ 总结

操作 命令
创建支持多平台的 builder docker buildx create --use --name mybuilder --driver docker-container
安装 QEMU 支持 docker run --rm --privileged tonistiigi/binfmt --install all
查看 builder 列表 docker buildx ls
构建多平台镜像 docker buildx build --platform linux/amd64,linux/arm64 -t your-image .

如需我帮你整理一套完整的 buildx + 多平台 + 阿里云推送 构建脚本,也可以说一下.

You:

$ bash build-command.sh (xs/default) [+] Building 0.0s (0/0) error: multiple platforms feature is currently not supported for docker driver. Please switch to a different driver (eg. "docker buildx create --use")

ChatGPT:

你现在的错误信息再次确认了:

docker 驱动(默认 driver)不支持 --platform 多架构构建.


✅ 解决步骤(一步一步教你切换到支持多平台的 buildx builder)

以下是完整可运行的解决流程(适用于大多数 Linux 主机和 Mac Docker Desktop 环境):


✅ 第一步:安装并切换到支持多平台的 Builder

# 创建新的 builder,名称自定义,比如:mybuilder
docker buildx create --name mybuilder --use --driver docker-container

你可以检查是否已切换成功:

docker buildx ls

你应该能看到如下内容,标明你使用了 docker-container 驱动:

NAME/NODE       DRIVER/ENDPOINT             STATUS   PLATFORMS
mybuilder *     docker-container            running  linux/amd64, linux/arm64, ...

✅ 第二步:确保已安装 QEMU(用于跨平台支持)

docker run --rm --privileged tonistiigi/binfmt --install all

这会为你安装支持多平台模拟执行的工具.


✅ 第三步:重新执行你的构建脚本

确保你脚本如下:

#!/bin/bash

docker buildx build --platform linux/amd64,linux/arm64 \
  -t crpi-4lzb9eicmxfps53y.cn-beijing.personal.cr.aliyuncs.com/common_runtime/miniconda3:v1 \
  .

然后运行:

bash build-command.sh

✅ 第四步(可选):推送镜像到远程仓库

如果你希望推送(push)到阿里云镜像仓库,请加上 --push 参数:

docker buildx build --platform linux/amd64,linux/arm64 \
  -t crpi-.../miniconda3:v1 \
  --push \
  .

如果你没有 --push,构建的镜像是存在于 BuildKit 的缓存中,默认不会出现在 docker images 列表里.


🔁 补充说明:构建并导出到本地

如果你只是想要构建出多架构镜像并放到本地,可以使用:

docker buildx build --platform linux/amd64,linux/arm64 \
  --output=type=docker \
  -t myimage:v1 \
  .

这会将结果镜像导回本地 docker image ls 中.


如你需要我帮你写一份完整的 build-command.shDockerfile 多架构构建推送流程,也可以直接说.

回到页面顶部