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查看,看到已经退出了。
在这里插入图片描述

原因及解决方案:
检查容器日志

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!

在这里插入图片描述
日志显示,在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

再次执行就不会自动退出了。
docker 运行mysql 报错 mysqld: [ERROR] Fatal error in defaults handling. Program aborted!_第1张图片

你可能感兴趣的:(自动化运维,mysql,docker,数据库)