Docker报mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file

484 阅读1分钟

使用Docker搭建Mysql集群时,使用下面的命令启动容器报错:

docker run -d -p 3310:3306 -v ~/docker/mysql/slave4/conf/:/etc/mysql/ -v ~/docker/mysql/slave4/data/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

20230222113405.jpg 在网上查了下,从5.7的某个版本开始,/etc/mysql/下没有conf.d目录了。

通过去掉-v ~/docker/mysql/slave4/conf/:/etc/mysql/-v ~/docker/mysql/slave4/data/:/var/lib/mysql/这两个文件挂载配置,执行如下命令

docker run -d -p 3310:3306  -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

,成功启动容器后,进入容器docker exec -it slave4 /bin/bash,查看: image.png ,回退到/etc目录下,发现了mysql的配置文件: image.png

所以如果想使用文件挂载,

  1. 需要提前创建相应的目录(我这里是~/docker/mysql/slave4/conf/~/docker/mysql/slave4/data/)
  2. 在1中的conf目录下创建conf.dmysql.conf.d目录
  3. 运行容器
docker run -d -p 3310:3306  -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

容器启动成功后,将mysql配置文件复制到上面的conf目录下

docker cp slave4:/etc/my.cnf ~/docker/mysql/slave4/conf/

,然后重启容器即可。