Docker启动mysql/mysql-server:5.7容器时出现SegFault求助
调试MySQL 5.7 Docker容器段错误问题的步骤及所需补充信息
调试步骤
降级Docker版本验证兼容性
直接将Docker降级到25.0.2版本(同事可用的版本),确认是否为Docker版本引入的问题。根据你的操作系统执行对应降级命令:- Debian/Ubuntu系统:
sudo apt install docker-ce=5:25.0.2-1~ubuntu.22.04~jammy(版本号需匹配你的系统发行版) - RHEL/CentOS系统:
sudo yum install docker-ce-25.0.2-1.el7
降级完成后重启Docker服务并重新启动容器。
- Debian/Ubuntu系统:
启用核心转储分析崩溃原因
在docker-compose.yml中为MySQL服务添加核心转储相关配置,获取崩溃时的核心文件以便进一步分析:services: mysql: image: mysql/mysql-server:5.7 environment: MYSQLD_DEBUG: "d,core" command: ["mysqld", "--core-file", "--user=mysql", "--initialize-insecure", "--default-time-zone=+00:00"]容器崩溃后,通过
docker cp命令将核心文件拷贝到宿主机,使用gdb工具加载核心文件和MySQL二进制文件,分析崩溃栈信息。替换MySQL镜像小版本测试
尝试使用mysql/mysql-server:5.7.40或更早的5.7系列小版本镜像,排除当前镜像(5.7.41)本身的问题。临时禁用Docker安全限制测试
临时关闭Docker的seccomp或apparmor安全配置,验证是否为安全策略导致的段错误:docker run --rm --security-opt seccomp=unconfined mysql/mysql-server:5.7如果此命令能正常初始化数据库,说明安全配置存在兼容性冲突。
检查宿主机系统差异
对比同事的宿主机内核版本、操作系统更新记录,执行uname -a和cat /etc/os-release获取你的宿主机信息,排查是否为宿主机系统更新引入的兼容性问题。
需要补充的信息
- 完整的
docker-compose.yml内容:包括所有环境变量、卷挂载、网络配置、自定义命令等细节。 - 宿主机操作系统及内核版本:执行
uname -a和cat /etc/os-release的完整输出。 - 容器启动的完整日志:包含段错误发生前后的所有日志内容,而非仅当前截取的几行。
- Docker daemon配置:
/etc/docker/daemon.json的内容,以及当前使用的存储驱动类型(执行docker info | grep Storage获取)。
内容的提问来源于stack exchange,提问作者DMCApps
相关产品推荐
相关产品推荐

