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

Docker部署MongoDB失败(退出码4/SIGILL信号)求助

解决MongoDB 6.0 UBI8容器启动失败问题

核心原因

  • SIGILL终止信号明确指向CPU不支持MongoDB 6.0强制要求的AVX指令集,官方UBI8镜像的标准构建仅适配支持AVX的CPU,无AVX环境下会直接崩溃。
  • 带初始化环境变量时的子进程错误码-4,是因为mongod进程根本无法启动,导致初始化脚本执行失败引发的连锁错误。

解决方案

1. 切换非AVX兼容镜像

MongoDB官方提供了专门适配无AVX CPU的镜像变体,替换原镜像即可解决:

# 带管理员账号初始化启动
docker run --name mongodb -d -e MONGODB_INITDB_ROOT_USERNAME=user -e MONGODB_INITDB_ROOT_PASSWORD=pass mongodb/mongodb-community-server:6.0-ubi8-nonavx

# 无环境变量启动(仅用于快速验证)
docker run --name mongodb -d mongodb/mongodb-community-server:6.0-ubi8-nonavx

2. 验证CPU指令集(可选)

执行命令确认CPU是否支持AVX:

grep -o avx /proc/cpuinfo
  • 无输出:确认无AVX支持,必须用nonavx镜像。
  • 有输出:尝试清理残留资源后重新拉取镜像:
    # 停止并删除旧容器
    docker stop mongodb && docker rm mongodb
    # 清理无用卷
    docker volume prune -f
    # 重新拉取最新镜像
    docker pull mongodb/mongodb-community-server:6.0-ubi8
    # 启动时开启调试日志排查细节
    docker run --name mongodb -it --rm mongodb/mongodb-community-server:6.0-ubi8 mongod --verbose
    

3. 降级MongoDB版本(备选)

如果不需要6.0的新特性,可降级到对CPU要求更低的5.0版本:

docker run --name mongodb -d -e MONGODB_INITDB_ROOT_USERNAME=user -e MONGODB_INITDB_ROOT_PASSWORD=pass mongodb/mongodb-community-server:5.0-ubi8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:17:20