Mac M1(Rosetta 2)构建Docker镜像时遇exec format error求助
解决M1 Mac(Rosetta 2环境)Docker构建
exec /bin/sh: exec format error问题 核心原因
问题源于Docker拉取了与Rosetta 2模拟的x86_64环境不兼容的arm64架构镜像,导致执行shell命令时出现格式错误。
解决方案
构建时强制指定amd64平台
在docker build命令中添加平台参数,确保构建过程适配x86_64架构:docker build --platform linux/amd64 .若使用Makefile构建,直接在对应build目标中加入上述参数即可。
Dockerfile中锁定基础镜像架构
给FROM指令添加平台声明,强制拉取amd64版本的基础镜像:FROM --platform=linux/amd64 ubuntu:20.04 # 替换为你的实际基础镜像检查Docker Desktop的Rosetta配置
打开Docker Desktop,进入Settings > Resources > Emulation,勾选"Use Rosetta for x86/amd64 emulation on Apple Silicon",重启Docker后再尝试构建。清理针对性构建缓存
执行以下命令彻底清理构建缓存,避免残留的arm64镜像干扰:docker builder prune -a
额外验证步骤
确认终端运行在Rosetta 2环境:
- 右键点击终端应用(如Terminal/iTerm2)→
Get Info,勾选"Open using Rosetta",重启终端后再执行构建操作。
内容的提问来源于stack exchange,提问作者Pauk_Jhonson
相关产品推荐
相关产品推荐

