解决Docker假死问题(stop或kill不掉容器)
系统版本:
LSB Version: core-9.20160110ubuntu0.2-amd64:core-9.20160110ubuntu0.2-noarch:security-9.20160110ubuntu0.2-amd64:security-9.20160110ubuntu0.2-noarch
Distributor ID: Ubuntu
Description: Ubuntu 16.04.4 LTS
Release: 16.04
Codename: xenial
docker 版本:
Docker version 18.05.0-ce, build f150324
下面汇总一下相关解决办法
1)系统的老套路是所有文件或进程kill不掉,一般是相关联的文件或设备被占用着。docker容器都有一个挂载目录,首先我们先找到挂载目录
# ll /var/lib/docker/containers | grep 容器编号
会显示容器对应的目录,将目录名复制
# cd /var/lib/docker/containers
# rm -rf 目录名
2)这个时候会发现目录删除不了,提示设备或资源忙
rm: 无法删除"/var/lib/docker/containers/目录名/secrets": 设备或资源忙
无法删除"/var/lib/docker/containers/目录名/shm": 设备或资源忙
3)这个时候查一下容器对应的挂载目录
cat /proc/mounts |grep "docker" |grep "容器名"
4)取消挂载
umount /data/sys/var/docker/containers/挂载目录/secrets
umount /data/sys/var/docker/containers/挂载目录/shm
如果这一步 unmout 不了,可以尝试找到使用该目录的进程
lsof |grep "挂载目录"
如果有相关进程,记录相关的进程号直接 kill -9 进程号
5)这个时候再去 cat 一下挂载目录应该是没有了,此时可以去删除容器目录了
# cd /var/lib/docker/containers
# rm -rf 容器目录名
6)然后再杀掉容器
docker rm -f 容器名
或
docker kill --signal=SIGINT 容器名
以上方案还不行就只能重启docker 了
sudo service docker restart
- 扫码关注“火龙果编程”公众号,早日成为编程大神
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。