AWS EC2实例中Docker MySQL容器启动后自动退出问题求助
排查Docker MySQL容器启动后自动退出的方法
查看容器启动日志
这是定位问题最直接的方式,执行命令查看容器的启动报错信息:docker logs docker-mysql日志里通常会明确给出失败原因,比如初始化失败、权限错误、配置冲突等。
检查EC2实例资源情况
小规格的EC2实例(比如t2.micro)内存可能不足以支撑MySQL启动,可通过以下命令检查:- 查看内存使用:
free -h - 检查是否因内存不足被系统杀死:
dmesg | grep -i oom
如果是OOM导致,可升级实例规格或者关闭其他占用内存的进程。
- 查看内存使用:
清理旧容器与关联卷
如果之前创建过同名容器或卷,残留的旧数据可能导致初始化失败,执行以下命令清理后重新创建:docker rm -f docker-mysql docker volume rm $(docker volume ls -qf name=docker-mysql)然后重新运行你的启动命令。
检查环境变量格式
如果密码包含特殊字符(如$、!、&),需要用双引号包裹,避免被shell解析错误:docker run --name docker-mysql -e MYSQL_ROOT_PASSWORD="your-complex-password" -e MYSQL_DATABASE=urooj -e MYSQL_USER=user -e MYSQL_PASSWORD="your-complex-password" -d mysql:latest --default-authentication-plugin=mysql_native_password指定具体MySQL版本而非latest
latest标签可能指向最新的大版本(如MySQL 8.4+),部分新特性或默认配置可能和旧启动命令不兼容,尝试指定稳定版本:docker run --name docker-mysql -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=urooj -e MYSQL_USER=user -e MYSQL_PASSWORD=password -d mysql:8.0 --default-authentication-plugin=mysql_native_password排查SELinux限制
如果EC2实例开启了SELinux,可能会阻止容器访问文件系统,临时关闭SELinux测试:setenforce 0若关闭后容器能正常运行,可通过配置SELinux规则来允许容器访问,而非长期保持关闭状态。
内容的提问来源于stack exchange,提问作者Salahuddin Shayan
相关产品推荐
相关产品推荐

