Docker Compose启动报exec format error错误,M1环境求助
解决M1芯片上Docker容器启动报exec format error的问题
你遇到的exec format error确实是M1芯片(ARM64架构)与x86架构镜像不兼容导致的——容器内的二进制文件是为x86编译的,ARM处理器无法直接执行。以下是具体解决步骤:
方法一:指定架构重新构建镜像
在docker-compose.yml中给每个服务添加platform字段,强制使用x86架构构建和运行:
services: nginx: build: ./nginx platform: linux/amd64 # 保留原服务的其他配置(端口、卷挂载等) crm-php-fpm: build: ./crm-php-fpm platform: linux/amd64 # 保留原服务的其他配置 clickhouse: build: ./clickhouse platform: linux/amd64 # 保留原服务的其他配置
执行以下命令重新构建并启动:
docker-compose build --no-cache docker-compose up
方法二:检查基础镜像的ARM兼容性
你使用的nginx基础镜像registry.is74.ru/docker/nginx:1.20.1-alpine-r1可能仅提供x86版本。可以查看该私有镜像仓库是否有ARM64架构的变体,如果有,直接替换为对应ARM版本的镜像标签,Docker会自动适配M1架构。
方法三:清理缓存与旧镜像
如果之前的构建缓存残留了x86架构的文件,先清理后再重新构建:
# 停止并移除容器、卷 docker-compose down -v # 删除所有本地镜像(谨慎操作,会删除所有未使用的镜像) docker rmi $(docker images -q) # 清理Docker系统缓存 docker system prune -a
之后再执行docker-compose build和docker-compose up。
内容的提问来源于stack exchange,提问作者Ilya Kvashnin
相关产品推荐
相关产品推荐

