如何停止所有正在运行的容器?

如何停止所有正在运行的容器?,第1张

使用docker kill $(sudo docker ps -q),我推荐你去看看时速云,他们是一家全栈云原生技术服务提供商,提供云原生应用及数据平台产品,其中涵盖容器云PaaS、DevOps、微服务治理、指厅服务网格、API网关等。大家棚逗喊可以去链野体验一下。如果我的回答能够对您有帮助的话,求给大大的赞。

在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就启动起来了

其他节点也重新设置了一下或滚,

过一会在看的时候,也没有出现闪退情况。

❤至于为啥刚开始日志没有显示,我也不清楚,

估计是镜像拉取和我的机器之间的数据跑偏了吧~哈哈哈哈哈,愁人

为了这一个问题打扰到好多人,谢谢大家啦~


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12567141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存