Docker容器无法启动后,如何修改里面的配置文件

本来想修改mysql数据的配置文件,加了一个system_time_zone=CST 修改数据库时区,结果再次启动docker的时候直接报错: [ERROR] [MY-000067] [Server] unknown variable 'system_time_zone=CST'.

docker exec -it mysql bash 已经无法进入容器了,问题是容器无法启动, 但容器配置文件又在容器里面, 我们该怎么办呢 ?

方法一:

把docker容器中的配置文件复制到主机中,然后在主机中修改,修改完成后再复制到docker容器中,这里需要使用的docker的命令:

docker cp [容器id]:docker容器中配置文件路径  主机路径

例如:

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

这样就能把容器中的文件拿到本地来,然后进行修改之后呢,再通过该命名上传到容器中去。

例如:

docker cp 主机文件路径 容器id:docker容器中配置文件路径
docker cp /home/my.cnf mysql:/etc/mysql/my.cnf

之后我们重启容器就可以了。

方法二:

但是有时候,我们拿下来配置文件来也没用,比如有时间有多余的文件我们想要删除。docker cp命令是不能满足的。这个时候我们就可以考虑想办法连接到docker 的本身虚拟机(MobyLinuxVM)里面去处理那些文件,因为我们所有的镜像文件和容器都在这里面的。

其实在linux系统的比较好连接docker 的本身虚拟机(MobyLinuxVM)。在window上就比较麻烦一些了

window上连接docker本身虚拟机(MobyLinuxVM)解决方式:

先执行这个,会下载一个镜像和启动一个容器:
docker run --privileged -it -v /var/run/docker.sock:/var/run/docker.sock jongallant/ubuntu-docker-client 

然后再执行:

docker run --net=host --ipc=host --uts=host --pid=host -it --security-opt=seccomp=unconfined --privileged --rm -v /:/host alpine /bin/sh

最后登陆到宿主host就能操作所有容器文件了:

chroot /host

例如你要操作某一个容器的文件,例如es01,可以通过命令查看es01容器的:

docker inspect es01

能到找到容器的文件所在的位置,然后通过上面的操作就能去增删改查你的配置文件了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值