docker容器刚启动就停止 — 运行mysql 报错 mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: docker容器刚启动就停止 — 运行mysql 报错 mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

问题:

使用docker run 命令运行mysql成功,但是使用docker ps 看不到容器实例,使用docker ps -a看到刚运行的mysql实例自动退出了,具体情况如下:

执行如下命令想要创建一个mysql容器实例,

docker run -p 3307:3306 --name mysql-master \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root  \
-d mysql:5.7


执行完后使用docker ps查看,未找到,然后使用docker ps -a查看,看到已经退出了。

d45538ea931d4767847b52a885ed7cf4.png

原因及解决方案:

检查容器日志

docker logs --tail 100 [容器id]


报错如下:

\2023-03-14 03:56:38+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.41-1.el7 started.

2023-03-14 03:56:38+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config

command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.UZOXvK5dSl

mysqld: Can’t read dir of ‘/etc/mysql/conf.d/’ (Errcode: 2 - No such file or directory)

mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

73c84c4a7b1840569552266034eade8c.png

日志显示,在mysql容器启动时,没有读取到配置文件。而配置文件是我们在创建容器时,挂载数据卷时设置的,于是明确问题定位在了创建容器的命令中。发现在挂载数据卷的时候,只指定了配置文件所在的文件夹,并没有明确的指定要挂载文件夹中的哪些文件。

在报错的mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)这句话中,也明确指明了找不到/etc/mysql/conf.d/这个目录,于是就要修改第三个-v。

修改docker run 命令如下:

docker run -p 3307:3306 --name mysql-master \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456  \
-d mysql:5.7


再次执行就不会自动退出了。

ebdaef87c41442a984f9c25661ee176a.png

在后面学习devops使遇到了类似的这种情况:

使用docker run命令启动容器后,用docker ps命令查看,找不到刚才运行的容器,使用docker ps -a查看,刚才运行的容器已经处于停止状态,相当于刚运行就被停止了。

在后面加上-c "tail -f /dev/null"表示不中断

docker run -id -p 8082:8082  --name test-7  582698141c6c /bin/bash  -c "tail -f /dev/null"

75f97c637b844262933f66f34262a105.png

看到的老师如果遇到过这种情况,烦请留言解答,我将不胜感激。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
30天前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
273 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
14天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
28 1
|
30天前
|
存储 自然语言处理 关系型数据库
mysql 8.0 日期维度表生成(可运行)
mysql 8.0 日期维度表生成(可运行)
42 2
|
1月前
|
安全 Docker 容器
Docker中运行容器时Operation not permitted报错问题解决
【10月更文挑战第2天】Docker中运行容器时Operation not permitted报错问题解决
289 3
|
1月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
【10月更文挑战第1天】使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
59 3
|
1月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库如何设置忽略表名大小写?
【10月更文挑战第1天】使用Docker部署的MySQL数据库如何设置忽略表名大小写?
133 1
|
1月前
|
弹性计算 关系型数据库 MySQL
Docker安装MySQL
这篇文章详细介绍了如何使用Docker安装MySQL数据库服务,包括拉取镜像、配置数据卷以及启动容器的步骤。
282 0
Docker安装MySQL
|
30天前
|
存储 关系型数据库 MySQL
mysql 8.0 时间维度表生成(可运行)
mysql 8.0 时间维度表生成(可运行)
33 0
|
30天前
|
网络虚拟化 Docker 容器
docker Desktop报错 error pulling image configuration 处理
docker Desktop报错 error pulling image configuration 处理
34 0
|
1月前
|
关系型数据库 MySQL 数据库
如何使用Docker部署MySQL数据库?
【10月更文挑战第1天】如何使用Docker部署MySQL数据库?
161 0