MongoDB 2.6.12版本Docker容器启动后快速退出问题排查求助
排查MongoDB 2.6.12容器启动后快速退出(状态码139)的问题
状态码139的核心含义
状态码139对应进程收到SIGSEGV信号(段错误),说明MongoDB启动时尝试访问非法内存地址,直接导致崩溃。
具体排查步骤
1. 切换交互模式启动,捕获实时输出
后台启动(-d)可能丢失启动时的错误日志,改用交互模式直接查看控制台输出:
docker run --name some-mongo -it mongo:2.6.12 mongod
如果仍无输出,跳过默认entrypoint,手动进入容器执行命令:
docker run --name some-mongo -it --entrypoint /bin/bash mongo:2.6.12
进入容器后手动启动mongod:
mongod
观察是否有明确的错误提示。
2. 验证CPU架构兼容性
MongoDB 2.6.12是老旧版本,官方镜像仅适配x86_64架构。若你的宿主机是ARM架构(如M系列Mac、树莓派),会因架构不兼容直接崩溃,且老版本镜像无ARM适配的错误输出。
检查宿主机架构:
uname -m
若输出为arm64/aarch64,可通过QEMU模拟x86架构解决:
# 安装QEMU静态编译工具 docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # 重新启动MongoDB容器 docker run --name some-mongo -d mongo:2.6.12
3. 调整内存与内核参数
老版本MongoDB对内存和内核参数有特定要求,尝试增加内存限制并调整内核参数:
docker run --name some-mongo -d --memory=2g --sysctl net.core.somaxconn=4096 mongo:2.6.12
另外,宿主机的transparent_hugepage设置可能干扰老版本MongoDB,临时关闭:
echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag
4. 挂载本地目录规避权限问题
容器内MongoDB默认以mongodb用户运行,可能存在数据目录权限冲突。挂载本地目录并设置对应权限:
mkdir -p ./mongo-data chown 999:999 ./mongo-data docker run --name some-mongo -d -v $(pwd)/mongo-data:/data/db mongo:2.6.12
5. 检查Docker版本兼容性
过新的Docker版本可能与老旧镜像存在兼容性问题,可尝试降级到Docker 20.10.x等稳定旧版本后再测试。
内容的提问来源于stack exchange,提问作者PHP Avenger
相关产品推荐
相关产品推荐

