/var/lib/docker/overlay2/xxxxx no such file or directory docker文件删除引发的问题

本文记录了一次因误删K8s节点overlay2目录下的文件导致服务雪崩的事故,详细解析了docker容器缓存机制,并提供了清除缓存镜像层的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记一次误删引发的服务雪崩

K8s node节点磁盘报警,报警后我找到服务中占用磁盘最多的地方,在overlay2目录下,对下面的文件进行了删除
 
删除后,有状态服务先出现了问题,服务无法启动、停止、删除。
 
对节点进行重启后,无状态服务集体雪崩…

报错信息如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MPfXzO8D-1645007926536)(https://gts-workorder.oss-cn-beijing.aliyuncs.com/20220215/d93d2d90-acf0-43d3-8f10-320f6322b5f3/image.png?Expires=1645608039&OSSAccessKeyId=LTAI4FrZPa9N1nGWs6Nykp3A&Signature=hkRj%2BsVi%2BNP%2FOa6NDkomQRGz0No%3D)]

解决方法:
# 缓存镜像层的问题,要清除缓存镜像层
docker system prune -a
  • 分析:docker容器将容器缓存放在了overlay2这个目录下,保存着当前服务的状态等资源。将目录删除后,容器默认会先去查状态,然后再进行销毁、重启等操作。这时候,找不到目录,就停在了这里。

  • 建议: 清理docker内存,使用docker删除镜像的命令,除非删除挂载卷备份文件,其他不要使用rm去找文件。

在生产环境不建议这么使用,因为它会删除所有未使用的数据,包括:

  • 所有停止的容器
  • 所有未使用的网络
  • 所有悬空的镜像(即不被任何容器引用的镜像)
  • 所有未使用的构建缓存

这种操作可能会导致丢失一些有用的数据,特别是如果你不小心删除了一些你还需要的镜像或容器。为了避免这种风险,你可以使用下面这些替代方法来选择性地清理 Docker 资源:

清理未使用的容器:

docker container prune

清理未使用的镜像:

docker image prune

清理未使用的网络:

docker network prune

清理构建缓存:

docker builder prune
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

了迹奇有没

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值