解决:关于docker闪退的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决:关于docker闪退的问题相关的知识,希望对你有一定的参考价值。
参考技术A 在docker下搭建pxc集群,直接拉取的镜像,创建了5个pxc容器,但是当测试负载均衡,挂掉一个节点的时候,没重新启动节点,等第二天接着来的时候,启动这个节点,却出现docker容器闪退的问题。看了日志,并没有提示什么
1)内存问题,调整了内存到4G,然后问题没有解决。。。
2)Docker占用的磁盘空间不足,执行了命令docker system df,查看了Docker的磁盘使用情况,还算可以,然后对磁盘进行清理,删除关闭的容器、无用的数据卷和网络,清理了日志,日志占用了好大空间啊,然后然后,问题还是没有解决。。。
3)看到网上大部分都是关于 Docker容器后台运行,就必须有一个前台进程,
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。
刚开始看没明白这说的是个啥,我没涉及到前后台呢
然后就利用自己创建的容器,观察里面的进程
就是:
当创建一个Docker容器的时候,就会新建一个PID namespace。容器启动进程在该名空间内PID为1。当PID1进程结束之后,Docker会销毁对应的PID名空间,并向容器内所有其它的子进程发送SIGKILL。
使用命令
你会看见
使用命令
使用docker exec命令进入容器PID名空间,并执行应用。通过ps -ef命令,可以看到容器里包含一个PID为1的进程,CMD里,它是容器的启动进程
利用docker top命令,可以让我们从宿主机看到容器的进程信息。容器node1是一个独立的进程,父进程 Docker Daemon。所以Docker可以父子进程的方式在Docker Daemon和容器之间进行交互。
docker exec命令可以进入指定的容器内部执行命令。由于它启动的进程属于容器的namespace和相应的cgroup。但是这些进程的父进程是Docker Daemon而非容器的PID1进程。
大家可以去再了解了解关于PID的问题,我这就不说了~
因为我这个只是简单的拉取镜像创建的容器,所以,不会这么复杂需要处理那些“孤儿”进程和“僵尸”进程,或者像采用网上的前台开启一个进程的方式,这个原因我也给pass掉了。。。
❤折腾了好几天,坚持就是好滴~~
❤因为是初创容器,所以里面没有重要的东西,每天我没事就来一遍,把容器删掉,重新拉取镜像几次后,终于日志有反应了,在日志里发现了问题
按照提示信息需要编辑文件grastate.dat ,并设置 safe_to_bootstrap=1
1)退到根目录下
2)修改下面每一个grastate.dat 里面的safe_to_bootstrap=0改为 :
保存
3)重新启动容器node1
4)查看 docker ps -a 就启动起来了
其他节点也重新设置了一下,
过一会在看的时候,也没有出现闪退情况。
❤至于为啥刚开始日志没有显示,我也不清楚,
估计是镜像拉取和我的机器之间的数据跑偏了吧~哈哈哈哈哈,愁人
为了这一个问题打扰到好多人,谢谢大家啦~
以上是关于解决:关于docker闪退的问题的主要内容,如果未能解决你的问题,请参考以下文章