记一次docker的mysql容器exited(1)无法正常启动

起因是因为我在使用docker创建自定义的镜像时遇到了爆内存的情况,迫不得已我需要重启docker服务并且强制停止所有容器,然后重启docker服务并且需要手动重启里面的容器。

在我start mysql容器的时候遇到了bug:启动mysql容器后秒退关闭了
输入docker ps -a查看情况
alt发现异常关闭了
输入docker logs f39859b3373a查看日志
只查看后面n行输入docker logs -t --tail=n [容器id]
mysql
发现是mysqld报错了,无法识别default-character-set=utf8,突然想起是几天前改过配置文件,应该是因为这个导致无法正常启动。
但是我又没法启动mysql容器改配置并且也没有使用挂载功能连接外部Linux,这很难办,获取docker容器在外部机的存储位置不是一件简单的事。
查阅资料发现可以使用docker cp命令拷贝容器里面的数据,提前找清楚容器内部的文件路径就好了。
我之前修改的配置路径在容器的\etc\mysql\my.cnf
使用

docker inspect -f '{{.ID}}'  f39859b3373a

查出容器的长ID:f39859b3373a7edc2b22a534caca4239b41661448799ec4bfaabe4aef21ec845
使用docker cp

docker cp f39859b3373a7edc2b22a534caca4239b41661448799ec4bfaabe4aef21ec845:/etc/mysql/my.cnf  /home/luo/

拷贝my.cnf到外部linux的/home/luo/目录下,
在这里插入图片描述

mysqld

编辑完后重新上传到Linux上,然后重新传回mysql容器中

docker cp /home/luo/my.cnf  f39859b3373a7edc2b22a534caca4239b41661448799ec4bfaabe4aef21ec845:/etc/mysql/

最后重新启动mysql容器,可以正常启动了。
在这里插入图片描述
在这里插入图片描述
至于表的数据,存放在docker容器里的/var/lib/mysql/下,需要的话可以拷贝出来保存到外部虚拟机。

最后还是推荐使用挂载的方式创建容器方便数据的传输存储:Docker mysql 把数据存储在本地目录

其他参考资料:
Docker 从容器中拷贝文件到宿主机中

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值