我更改了一些mysql配置设置并设置了错误,现在Docker容器一直在重启,我找不到要在主机文件系统中编辑的my.cnf
文件。我已经尝试过aufs / diff文件夹,但到目前为止无法找到它。还尝试过:
find / -name my.cnf -exec nano {} \;
但它没有显示我更改的文件。我尝试将config.v2.json
更改为/bin/bash
而不是mysqld
并重新启动了docker,但是它使用官方的mysql容器图像启动了mysqld
(应该是主管还是什么?)。
答案 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
文件,那么您再也不会遇到此问题,因为您可以根据需要多次编辑该文件。