解决群晖Docker无法停止容器的问题

最近在群晖上折腾一些好玩的Docker镜像,其中有一个容器准备停掉然后修改下配置,但是在Docker管理界面点击停止后,却没有任何反应,即使通过SSH连接到群晖上使用docker stop xxx,依然无法停止此容器。不仅如此,后来又发现针对此容器各类docker命令均无效,表现为输入命令后一直hang住,既没有成功也不报失败!

最近在群晖上折腾一些好玩的Docker镜像,其中有一个容器准备停掉然后修改下配置,但是在Docker管理界面点击停止后,却没有任何反应,即使通过SSH连接到群晖上使用docker stop xxx,依然无法停止此容器。不仅如此,后来又发现针对此容器各类docker命令均无效,表现为输入命令后一直hang住,既没有成功也不报失败!

查找原因

通过询问搞运维的朋友,反馈说大概率是这个容器在启动时又在内部启动动了另一个进程,然后退出了初始化进程,导致新启动的进程成了孤儿进程,进而导致docker stop无法执行成功(docker stop会发送kill -9)。但是通过一通操作,譬如ps -ef | awk '{ if ($4==1){print}}'docker top <id>等等,依然无法确定孤儿线程,无奈只能另寻他法。

于是换个思路,既然容器无法关闭,那能不能直接把Docker应用重启呢?

经过一番搜索,还真在群晖系统中发现了端倪!在/var/packeges/Docker/scripts路径下,发现了一个脚本:start-stop-status

群晖启动关闭脚本

看了下这个脚本,发现它的作用就是启动和关闭Docker应用,并且在关闭应用本身的时候也关闭容器,简直太贴心了。

解决问题

接下来就很简单了,首先cd到上面的那个目录

  1. 第一步,现在终端中输入:
./start-stop-status stop

显示stopped,但是并没有真正完成,还需要耐心等待,直到命令执行完。

image-20220801201117563

终端中输出下面的内容时不用担心,继续等待:

image-20220801201406988

直到出现以下内容,表示Docker停止完成。

image-20220801201441797
  1. 第二步,重新启动Docker,在终端中输入:./start-stop-status start
    跟第一步一样,耐心等待脚本执行,直到出现下面内容,表示重启完成。image-20220801201650462

3、经过停止和重启后,原先无法正常关闭的容器,现在就可以正常关闭了。

原创文章,作者:诺多,如若转载,请注明出处:https://www.huluohu.com/posts/135/

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
推荐一款开源的短信和消息群发神器
上一篇 2022年4月6日 02:06
Flowable工作流引擎自定义表单组件完整教程
下一篇 2022年8月5日 02:21

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注