记录一下,一个困扰了我一两天的问题。
情况记录
在win10下的Docker中,因为之前很少用windows,所以在某一次需要重启的时候就直接重启了,但是在重启的就忘记了先关掉Docker,然后在宿主机重启了以后,就产生了两个Dead的容器。已经Dead的容器,启动也不行,删除也不行。所以就只有想办法去删除了。
删除报错
Error response from daemon: container 028027a9e9c063f6138eb358146c2a9e71c018417f700faefd6f679b0d261d18: driver "overlay2" failed to remove root filesystem: unlinkat /var/lib/docker/overlay2/8e516ef31b96152e3e1b7374a9a7f4224917049ec92160a83cc08ab393336dec/diff/www/wwwroot/127.0.0.1/public/.user.ini: operation not permitted
报错解说
其实就是这个容器已经Dead了,解说的是还有绑定的卷。
Liunx下的解决方案:
在Linux下,这个原理其实很好分析,就是这个进程还在运行中,直接Kill掉这个这个进程就可以了。
所以应该先查询这个,然后在Kill进程
- 通过 rm -f <容器名或ID>
- 查看报错
注意上图中白底的部分。
3.用grep 查询
grep 此处填写上方白底的字符 /proc/*/mountinfo
4.
5.直接来必杀剂 kill -9 7018 && 7019
7019|7018来源于“/proc/*/mountinfo”中间的“*”
Windows中的解决方案
关于Windows docker desk中我都不知道怎么记录了。
目前windows我没有找到一个比较好的方案,只能说:请直接看下图。就可以了。
因为子啊Windows的docker desk中有一个功能是“恢复出厂设置”。我觉得这是一个我说不清的逻辑。这方面不是很懂。反正windows下面就是有一个“恢复出厂设置”,简单的我都不知道应该怎么去描述这个事了。
疑问:不知道这个恢复出厂设置会不会产生其他的垃圾文件或者其余的什么的影响?反正大家一定要注意,生产环境不要这样玩。不过一般windows的话绝大多数都是开发环境吧。
注意要点:如果你的docker中有你已经修改过的镜像,不想你之前的工作白费的话,要先把你修改过的镜像生成一个新的镜像,然后推到仓库,再来恢复出厂设置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)