我在运行 docker 容器时遇到了问题。 生成的错误日志如下:
[错误] mysqld:未知变量“wait_timeout = 288000”。
我想测试一些 docker 容器功能。 于是,我打开docker bash,进入目录/etc/mysql/my.cnf。 我在 [mysqld] 选项下方添加了变量“wait_timeout = 288000”。
但是,重新启动后,当我运行容器时,它立即退出并显示状态代码 (1)。 我知道错误是由我刚刚添加的变量引起的。 所以,我想删除该变量,但现在 docker 容器 bash 无法打开。 在这种情况下,有什么方法可以删除变量“wait_timeout”? 如果没有,您能否推荐其他故障排除方法? 感谢您检查问题。
答案 0 :(得分:0)
删除并重新创建容器,它将从一个干净的容器文件系统重新开始。
这可能也是修改数据库配置的更好方法(如果你这样做,实际上,需要一个自定义的 my.cnf
)。您可以在启动时将配置文件的目录绑定挂载到容器中:
docker run -d -p 3306:3306 --name mysql \
-v $PWD/mysql-conf:/etc/mysql/conf.d \
mysql:8
然后当配置改变时,你可以删除并重新创建这个容器:
docker stop mysql
docker rm mysql
docker run -d -p 3306:3306 ... mysql:8 # as above
(有关详细信息,请参阅 Docker Hub mysql
image page 中的“使用自定义 MySQL 配置文件”。)
删除和重新创建 Docker 容器是非常常规的,其中一个好处是当一个新容器启动时,它总是有一个“干净”的文件系统。这种特殊的设置还确保修改后的配置文件存储在容器之外,因此如果您被迫重新创建容器(例如升级 MySQL 以获得关键的安全修复),这是您习惯做的事情并且您赢了不会丢失数据或设置。