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
相关产品推荐
相关产品推荐

