|
Docker容器Dead状态分析
报错
- [root@docker ~]# docker rm -f nginx-webError response from daemon: Driver devicemapper failed to remove root filesystem 2205f0562812bf3007155f3bb2670508783e23d12428e31fa42caa0d8f68ca22: remove /data01/var/lib/docker/devicemapper/mnt/01bf74d1cd26d2fed52d2eb2f881acd0401431952e7c115ffc3107311c191341: device or resource busy
复制代码 原因分析
挂载泄露
解决方法(一)
这种方式会有删除不掉的情况,所以在用在这种方式删除前重启服务器,那么就能删除掉.- docker stop share-mnt 1>/dev/null 2>&1 | exit 0
- docker rm -f share-mnt 1>/dev/null 2>&1 | exit 0
复制代码 解决方法(二)
先到docker目录 一般在 /var/lib/docker 删除相应文件夹目录- grep docker /proc/*/mountinfo | grep nginx-web | awk -F':' '{print $1}' | awk -F'/' '{print $3}'
复制代码 查出进程号,然后使用kill -9 ID .
再使用docker rm -f ID/name 删除掉 .
有时候测试的时候会生成大量的容器,一个一个停用然后删除没有效率.- 停用全部运行中的容器:
- docker stop $(docker ps -q)
- 删除全部容器:
- docker rm $(docker ps -aq)
- 一条命令实现停用并删除容器:
- docker stop $(docker ps -q) & docker rm $(docker ps -aq)
复制代码 报错- Error response from daemon: conflict: unable to delete d8638d086558 (cannot be forced) - image has dependent child images
复制代码 在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器(哪怕是已经停止的容器),否则无法删除该镜像.- 停止容器
- # docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }')
- 删除容器
- # docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')
- 删除镜像
- # docker rmi $(docker images | grep "none" | awk '{print $3}')
复制代码 Docker删除dead状态的容器
出现原因:由于容器挂载数据卷,无法直接删除
其现象如下:
解决方法1:尝试强制删除 docker rm -f ytn
解决方法2:先查出其进程,kill掉,在进行删除
1.查 ,复制上图白底部分,用以下命令进行查找- grep 00979f0816bf1c1df375fad83dbf3d023243728345ae9b81bc3b0f1762b15af8 /proc/*/mountinfo
复制代码 结果:
2.kill进程- kill -9 7018
- kill -9 7019
复制代码 3.再次查看,确认已经kill完- grep 00979f0816bf1c1df375fad83dbf3d023243728345ae9b81bc3b0f1762b15af8 /proc/*/mountinfo
复制代码 4.再次删除容器
删除成功。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
来源:https://www.jb51.net/server/293487ee6.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|