在/etc/mysql/my.cnf更改后MySQL容器崩溃,如何编辑回来?

时间:2017-02-10 07:26:12

标签: mysql docker crash debian containers

我更改了一些mysql配置设置并设置了错误,现在Docker容器一直在重启,我找不到要在主机文件系统中编辑的my.cnf文件。我已经尝试过aufs / diff文件夹,但到目前为止无法找到它。还尝试过:

find / -name my.cnf -exec nano {} \;

但它没有显示我更改的文件。我尝试将config.v2.json更改为/bin/bash而不是mysqld并重新启动了docker,但是它使用官方的mysql容器图像启动了mysqld(应该是主管还是什么?)。

1 个答案:

答案 0 :(得分:2)

我正在为您的问题找到两种可能的解决方案:

绕过ENTRYPOINT获取MySQL图像

运行docker images然后运行:

找到您的图像名称
docker run -it --entrypoint="/bin/sh" OPTIONS image

这应该将您带到容器内的bash,然后从那里执行您想要查找my.cnf文件的所有命令。虽然我不知道是否从那里编辑文件,保存它并尝试再次运行它将起作用。我没有尝试过。

删除旧图片并使用正确的方式修改my.cnf文件

运行docker images找到您的图片名称,然后运行docker rmi <image_name>

将其删除

MySQL Dockerhub检查文档中的默认MySQL图像是非常直接的,我引用:

  

使用自定义MySQL配置文件MySQL启动

     

配置在文件/etc/mysql/my.cnf中指定,并且   文件又包括/etc/mysql/conf.d中的任何文件   以.cnf结尾的目录。此目录中的文件中的设置将   在/etc/mysql/my.cnf中扩充和/或覆盖设置。如果你想   使用自定义的MySQL配置,您可以创建替代方案   配置文件在主机上的目录中然后挂载   那个目录位置为/etc/mysql/conf.d里面的mysql   容器

     

如果/my/custom/config-file.cnf是自定义的路径和名称   配置文件,你可以像这样启动你的mysql容器(注意   在此只使用自定义配置文件的目录路径   命令):

     

$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

     

这将开始一个新的   容器some-mysql,其中MySQL实例使用组合   来自/etc/mysql/my.cnf和的启动设置   /etc/mysql/conf.d/config-file.cnf,来自后者的设置   优先考虑。

从那时起,如果您在主机上创建my.cnf文件,那么您再也不会遇到此问题,因为您可以根据需要多次编辑该文件。