容器以状态码 (1) 退出

时间:2021-03-26 00:53:00

标签: docker docker-compose dockerfile

我在运行 docker 容器时遇到了问题。 生成的错误日志如下:

[错误] mysqld:未知变量“wait_timeout = 288000”。

我想测试一些 docker 容器功能。 于是,我打开docker bash,进入目录/etc/mysql/my.cnf。 我在 [mysqld] 选项下方添加了变量“wait_timeout = 288000”。

但是,重新启动后,当我运行容器时,它立即退出并显示状态代码 (1)。 我知道错误是由我刚刚添加的变量引起的。 所以,我想删除该变量,但现在 docker 容器 bash 无法打开。 在这种情况下,有什么方法可以删除变量“wait_timeout”? 如果没有,您能否推荐其他故障排除方法? 感谢您检查问题。

1 个答案:

答案 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 以获得关键的安全修复),这是您习惯做的事情并且您赢了不会丢失数据或设置。