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

我改变了一些MySQL的configuration设置,并设置错误,现在的Docker容器不断重新启动,我找不到my.cnf文件在主机文件系统中编辑。 我已经尝试过aufs / diff文件夹,但是到目前为止找不到它。 还试过:

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

但它并没有提出我改变的文件。 而我试图改变config.v2.json来启动/bin/bash而不是mysqld并重新启动docker,但是它却使用官方的mysql容器镜像启动了mysqld (由于主pipe或其他?)。

我看到了两个可能的解决scheme:

绕过MySQL映像的ENTRYPOINT

通过运行docker imagesfind您的图像名称,然后运行:

 docker run -it --entrypoint="/bin/sh" OPTIONS image 

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

删除旧图像并使用正确的方式编辑my.cnf文件

通过运行: docker imagesfind您的映像名称,然后通过运行docker rmi <image_name>删除它

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

使用自定义的MySQLconfiguration文件MySQL的启动

在/etc/mysql/my.cnf文件中指定了configuration,而该文件又包含/etc/mysql/conf.d目录中以.cnf结尾的任何文件。 这个目录下文件的设置将增加和/或覆盖/etc/mysql/my.cnf中的设置。 如果你想使用自定义的MySQLconfiguration,你可以在主机上的一个目录中创build你的替代configuration文件,然后把这个目录位置挂载到mysql容器中的/etc/mysql/conf.d。

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

$ 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的组合启动设置,后者的设置优先。

从这一点,如果你在主机上创buildmy.cnf文件,那么你将永远不会遇到这个问题,因为你可以多次编辑文件。