解决Docker不能stop或者kill一个容器方法
今天在弄Docker时候突然发现不能stop或者kill容器了,表现就是运行docker stop 命令半天没有反应。1. 一篇帖子的方法首先参考这一篇帖子,感觉讲的不错,这里先列举一下作者的方法。Docker中无法停止或删除容器服务问题处理执行删除命令无法删除docker的目录, 这里的话caf8ef20f3c1换成你想要stop的容器ID。ll /var/lib/docker/...
今天在弄Docker时候突然发现不能stop或者kill容器了,表现就是运行docker stop 命令半天没有反应。
1. 一篇帖子的方法
首先参考这一篇帖子,感觉讲的不错,这里先列举一下作者的方法。Docker中无法停止或删除容器服务问题处理
- 执行删除命令无法删除docker的目录, 这里的话caf8ef20f3c1换成你想要stop的容器ID。
ll /var/lib/docker/containers | grep caf8ef20f3c1
cd /var/lib/docker/containers
rm -rf caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8
这个时候我们会收到这样的报错:
rm: 无法删除"/var/lib/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/secrets": 设备或资源忙
无法删除"/var/lib/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/shm": 设备或资源忙
- 从上面报错我们可以看到“secrets”和“shm”共享挂载导致无法删除,首先找到挂载的位置,然后取消挂载后,再删除:
cat /proc/mounts |grep "docker" |grep "caf8ef20f3c1"
Docker中无法停止或删除容器服务问题处理
- 取消挂载,这是上面的挂载目录。
umount /data/sys/var/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/secrets
umount /data/sys/var/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/shm
- 再次查看已经没有显示了。
cat /proc/mounts |grep "docker" |grep "caf8ef20f3c1"
- 现在执行删除docker的目录:
cd /var/lib/docker/containers
rm -rf caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8
- 删除容器服务
现在我们使用 rm 或 kill 来删除 容器服务:
docker rm -f caf8ef20f3c1c
或
docker kill --signal=SIGINT caf8ef20f3c1
如果上面命令运行之后,出现hang住(卡住)现象,请重启docker服务:
sudo service docker restart
2. 最终我的方法
开始我觉得按照上面的方法是可以的,运行了前面的4步是可以的,也unmout的一个挂载的目录,但是运行第5步
rm -rf
命令的时候,还是出现了设备忙的,这就很尴尬了。没有办法,还是要继续解决的。
执行cat /proc/mounts | grep "448402cd2b11"
命令是没有显示的,表示我们已经unmount所有的挂载目录了("448402cd2b11"是我的自己想要删除的容器,上面的容器是作者在它文章中删除的容器)。 然后我们执行rm -rf 448402cd2b11652479e6bfb7f9959fe61f8e51624da6c756291a0c339d7519b6
仍然出现设备忙的。
好像问题到这里就没有办法了。然后我在另外一篇博客Linux不能删除,报错”Device or resource busy” 看到了类似的问题,想能不能试一试。然后将其迁移到我们这里, 使用命令:
lsof |grep "448402cd2b11652479e6bfb7f9959fe61f8e51624da6c756291a0c339d7519b6"
命令查看哪个进程在使用该镜像:
然后我们找到了有两个进程使用镜像,分别是25269
和93855
, 我们不知道kill哪个会有效果。然后我们就分别运行kill -9 25269
和kill -9 93855
然后发现前者不起效果,后者起效果。
好吧,终于又可以愉快的玩耍了。
更多推荐
所有评论(0)