问题描述

mysql在运行过程中报错,进入mysql容器修改配置文件时,单词拼错,导致mysql容器无法重新启动.

解决思路

由于docker无法进入已经停止的容器,所以只能曲线救国.

  • 先提交无法进入的docker容器
  • 使用临时终端启动新的镜像并修改相应文件,再次提交改容器
  • 将无法启动的docker容器中的内容复制出来
  • 使用新的镜像启动容器并挂载文件内容

解决步骤

  • 提交已经死亡的mysql容器

    docker commit mysql-old sunshineasbefore/mysql
  • 启动临时终端并修改出错的配置文件

    docker run -it --name mysql-modify sunshineasbefore/mysql /bin/bash
    vim /etc/mysql/my.cnf
  • 复制原有mysql数据库

    cp -r /data/docker/volumes/925bca0a69b6bffc06933db5578dcadda2efa3d7cee7c5642d7734e001293353
    /_data /xxx/xxx
  • 提交修改后的mysql容器

    docker commit mysql-modify sunshineasbefore/mysql
  • 重新启动新的mysql容器并挂载原有mysql数据库

    docker run -d -p 3306:3306 --name mysql-new -v 
    /xxx/xxx/_data/:/var/lib/mysql sunshineasbefore/mysql mysqld

    这个地方需要注意:
    因为在第二个步骤启动临时终端时使用了/bin/bash命令覆盖了mysql镜像中的mysqld命令,如果这一步不使用mysqld 命令覆盖回来的话,则不会启动成功.

总结

  • 话说在使用docker的过程中,直接进入容器修改配置文件,出错了好像真没有什么办法能够回复.只能在使用过程中注意了…
  • 话说在使用docker的过程中,还是要把配置文件挂载出来的好…
  • 原文地址: 修改无法启动的docker容器的配置
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐