You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Macbook M2上指定linux/amd64执行docker build失败求助

M2芯片MacBook上Docker构建linux/amd64镜像失败的解决方法

问题场景

在搭载M2芯片的MacBook上执行docker build构建linux/amd64平台镜像时失败,但直接运行对应平台的镜像无异常。

可复现命令

echo "FROM alpine:latest" | docker build --platform=linux/amd64 --progress=plain -f - .

核心错误信息

#5 ERROR: no match for platform in manifest sha256:d9ab3e9e8a65da61fb54c3e2471c8fabf787ce49403919bff7eaf10f99e33215: not found
------
 > exporting to image:
------
ERROR: failed to solve: no match for platform in manifest sha256:d9ab3e9e8a65da61fb54c3e2471c8fabf787ce49403919bff7eaf10f99e33215: not found

完整错误输出

#1 [internal] load .dockerignore
#1 transferring context: 2B done
#1 DONE 0.0s

#2 [internal] load build definition from Dockerfile
#2 transferring dockerfile: 93B done
#2 DONE 0.0s

#3 [internal] load metadata for docker.io/library/alpine:latest
#3 DONE 0.6s

#4 [1/1] FROM docker.io/library/alpine:latest@sha256:02bb6f428431fbc2809c5d1b41eab5a68350194fb508869a33cb1af4444c9b11
#4 resolve docker.io/library/alpine:latest@sha256:02bb6f428431fbc2809c5d1b41eab5a68350194fb508869a33cb1af4444c9b11 0.0s done
#4 CACHED

#5 exporting to image
#5 exporting layers done
#5 exporting manifest sha256:c887664786a565506760c1ebb17d0edbbc0f8427a4e723d05bba6dc1c199f63f done
#5 exporting config sha256:c9eabdf343eb2fef6b265aa86db47ee270dd0a170bf37bef1dcf94fa73236b65 done
#5 exporting attestation manifest sha256:ff813dfd9ec5f193d95d20bafa96b3d48b7510d178d4ef3195981314151856f1 done
#5 exporting manifest list sha256:d9ab3e9e8a65da61fb54c3e2471c8fabf787ce49403919bff7eaf10f99e33215 done
#5 naming to moby-dangling@sha256:d9ab3e9e8a65da61fb54c3e2471c8fabf787ce49403919bff7eaf10f99e33215 done
#5 unpacking to moby-dangling@sha256:d9ab3e9e8a65da61fb54c3e2471c8fabf787ce49403919bff7eaf10f99e33215 done
#5 ERROR: no match for platform in manifest sha256:d9ab3e9e8a65da61fb54c3e2471c8fabf787ce49403919bff7eaf10f99e33215: not found
------
 > exporting to image:
------
ERROR: failed to solve: no match for platform in manifest sha256:d9ab3e9e8a65da61fb54c3e2471c8fabf787ce49403919bff7eaf10f99e33215: not found

镜像运行正常验证

$ docker run --rm -ti --platform linux/amd64 alpine:latest uname -a
Linux b2a7299eadea 5.15.49-linuxkit #1 SMP PREEMPT Tue Sep 13 07:51:32 UTC 2022 x86_64 Linux
$ docker run --rm -ti --platform linux/arm64 alpine:latest uname -a
Linux 00ecc31c7eeb 5.15.49-linuxkit #1 SMP PREEMPT Tue Sep 13 07:51:32 UTC 2022 aarch64 Linux

已完成的排查

  • 设备为ARM架构Apple M2处理器:
    $ uname -a
    Darwin 22.5.0 Darwin Kernel Version 22.5.0: Mon Apr 24 20:53:19 PDT 2023; root:xnu-8796.121.2~5/RELEASE_ARM64_T6020 arm64
    
  • Rosetta qemu模拟功能正常:
    $ docker run --rm -ti --platform linux/amd64 alpine:latest uname -m
    x86_64
    
  • Docker Builder已配置多平台构建:
    $ docker builder ls
    NAME/NODE       DRIVER/ENDPOINT STATUS  BUILDKIT PLATFORMS
    default *       docker                           
      default       default         running v0.11.6  linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64
    desktop-linux   docker                           
      desktop-linux desktop-linux   running v0.11.6  linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64
    

解决方案

方法1:构建时显式命名镜像

避免生成悬空镜像时的平台匹配问题,给镜像指定标签:

echo "FROM alpine:latest" | docker build --platform=linux/amd64 --progress=plain -f - . --tag my-alpine-amd64:latest

方法2:启用Rosetta模拟选项

  1. 打开Docker Desktop偏好设置
  2. 进入Features in development选项卡
  3. 勾选Use Rosetta for x86/amd64 emulation on Apple Silicon
  4. 重启Docker Desktop后重新执行构建

方法3:使用Buildx构建并加载到本地

Buildx对多平台构建支持更完善,通过--load参数将镜像导入本地库:

echo "FROM alpine:latest" | docker buildx build --platform=linux/amd64 --progress=plain -f - . --load --tag my-alpine-amd64:latest

方法4:更新Docker版本

旧版本Docker在Apple Silicon上的多平台构建可能存在bug,更新至最新版Docker Desktop后重试。

内容的提问来源于stack exchange,提问作者Jesper Røn-Jensen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:34:54