如何在M1芯片的Mac设备上正常运行docker-compose?
报错原因
该报错是Apple Silicon芯片设备强制运行x86架构Docker镜像时,缺失x86版本动态链接库导致的:你在docker-compose中指定了platform: linux/x86_64,Docker通过Rosetta2模拟x86环境运行,但是你的Docker版本兼容性不足,或者镜像内安装的x86版本AWS CLI缺少对应依赖。
修复步骤
方案1:使用ARM原生架构(推荐,性能无损耗)
- 删除docker-compose配置中
platform: linux/x86_64这一行,让Docker自动拉取适配arm64架构的Ubuntu镜像 - 修改Dockerfile中的AWS CLI下载地址,替换为ARM版本安装包:
把原代码段:
替换为:RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && unzip awscliv2.zip && rm awscliv2.zipRUN curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip" && unzip awscliv2.zip && rm awscliv2.zip - 重新执行
docker-compose build构建即可正常运行
方案2:强制使用x86架构镜像(适配必须依赖x86环境的场景)
- 首先升级Docker Desktop到最新版本,你当前使用的4.1.1版本对Apple Silicon的x86模拟兼容性较差,新版已经优化了依赖适配逻辑
- 打开Docker Desktop设置,进入「Features in Development」页面,开启「Use Rosetta for x86/amd64 emulation on Apple Silicon」开关,重启Docker生效
- 在Dockerfile的
apt-get update步骤前添加补全x86依赖的命令:RUN dpkg --add-architecture amd64 && apt-get update && apt-get install -y libc6:amd64 - 重新构建镜像即可解决依赖缺失问题
内容的提问来源于stack exchange,提问作者xeLL
相关产品推荐
相关产品推荐

