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

Mac M2指定--platform linux/amd运行MongoDB容器报错求助

Mac M2指定linux/amd架构运行MongoDB容器报错处理

问题描述

在Mac M2设备上指定--platform linux/amd参数运行MongoDB容器,执行命令:

docker run --name mongodb -d -p 27017:27017 mongodb/mongodb-community-server:latest

触发如下错误:

2023-12-07 08:57:50 Traceback (most recent call last):
2023-12-07 08:57:50   File "/usr/local/bin/docker-entrypoint.py", line 637, in <module>
2023-12-07 08:57:50     subprocess.run(get_final_command_line_args(), check=True)
2023-12-07 08:57:50   File "/usr/lib/python3.10/subprocess.py", line 526, in run
2023-12-07 08:57:50     raise CalledProcessError(retcode, process.args,
2023-12-07 08:57:50 subprocess.CalledProcessError: Command '['mongod', '--bind_ip_all']' died with <Signals.SIGILL: 4>.

其他linux/amd架构容器可正常运行,该镜像的arm版本也能正常工作。

原因分析

错误中的SIGILL表示非法指令,说明最新版MongoDB的amd64镜像使用了Rosetta 2(Mac M系列转译amd64程序的工具)不支持的指令集,导致转译失败。

解决方法

  • 指定兼容的MongoDB版本:选择对Rosetta 2兼容性更好的旧版本,比如5.0或4.4系列的amd64镜像:
    docker run --name mongodb -d -p 27017:27017 --platform linux/amd64 mongodb/mongodb-community-server:5.0
    
  • 避免使用latest标签:latest默认指向最新版本,新版本可能引入了Rosetta不支持的指令,固定版本能避免这类问题。
  • 优先使用arm架构镜像:如果业务没有强制要求amd64,直接运行arm版本(不添加--platform参数,Docker会自动匹配M2的arm64架构),性能和兼容性都更优。
  • 升级转译工具:更新Docker Desktop到最新版本,同时确保Rosetta 2是最新状态,提升转译的兼容性。

内容的提问来源于stack exchange,提问作者spitfiredd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:43:29