CentOS中Docker的MySQL更改配置后重启不了的解决方案

项目要用到分库分表,然后自己手动更改了Docker中MysqL配置文件my.cnf。
配置完毕之后使用Docker进行部署,运行docker restart MysqL后没有成功启动。
问题排查,打印日志

docker logs MysqL

报错如下:

[ERROR] [Entrypointl: MysqLd Failed while attempting to check config command was : MysqLd --vervbose --help
[ERROR] Found option without preceding group in config file /etc/MysqL/ my cnf at line 27 MysqL Fatal error in defaults handling. Program aborted
[ERROR] [Entrypoint]: MysqLd Failed while attempting to check config command was MysqLd --verbose --help MysqLd: [ERROR] Found option without preceding group in config file /etc/MysqL/my.cnf at line 27!
MysqLd: [ERRORI Fatal error in defaults handling. Program aborted!

随后我打算执行

docker exec -it MysqL /bin/bash

先进入Docker容器之后再修改回原有配置,但是发现容器未启动(Container not started),因为exec执行命令只能用于已在运行的容器!!!

解决方

方式一:实际文本修改配置

首先当前Linux主机中已存放了docker容器中的配置信息(一般挂载认目录是:/var/lib/docker/overlay/),其次只要找到这个挂载目录的配置文件修改后就可以重新启动了
这里不过多赘述方式一。

方式二:间接修改配置文件

使用docker cp命令,把docker容器中的配置文件复制到Linux主机中来,接着修改完之后再复制回docker容器中去,就可以了完成配置文件的回滚了
具体操作(方式二)

1、将docker容器内的文件拷贝至Linux主机中

docker cp MysqL:/etc/MysqL/my.cnf .

注:. 代表是当前目录,我操作时当前目录是/root,且 MysqL:/etc/MysqL/my.cnf即为配置文件地址,上述代码操作完成之后 my.cnf 配置文件就会复制到当前操作目录下

2、vim修改配置文件中出错的地方,重新修改回来

3、复制修改后的配置文件到docker容器中去

docker cp my.cnf MysqL:/etc/MysqL/my.cnf

4、最后重启容器实例,使修改后的配置文件生效

docker restart MysqL

5、配置文件生效,MysqL正常启动

相关文章

Docker是什么Docker是 Docker.Inc 公司开源的一个基于 LXC技...
本文为原创,原始地址为:http://www.cnblogs.com/fengzheng...
镜像操作列出镜像:$ sudo docker imagesREPOSITORY TAG IMA...
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p...
在 Docker 中,如果你修改了一个容器的内容并希望将这些更改...
在Docker中,--privileged 参数给予容器内的进程几乎相同的权...