清理 overlay2 中多余文件

3 minute read

自从上次清理了Docker日志文件释放了磁盘空间以后(请见 清理 Docker 日志文件),我发现磁盘空间占用量还是居高不下,但是查看日志文件也没有增长到需要清理的地步。就在不久前,摸鱼站再次因为磁盘空间不足导致崩溃。我决定查一查到底是什么占了这么大地方。

首先来看看到底是什么占用了磁盘,使用命令 df -h,发现 /var/lib/docker/overlay2/ 占用了将近 90% 的空间(我差点晕过去)。知道问题所在,现在要搞清楚这个文件夹里到底是些什么东西,是不是可以一删了之。上网搜索一番,发现除了大概知道这个文件夹里储存了 docker 镜像文件之外,其他一概云里雾里。

至此我做了一件作死的事情。我将文件按时间排序,删掉了早期创建的文件。因为我觉得如果既然是容器镜像,那之前的应该不会用到。回到摸鱼站,除了某些页面出错,主体依然能用,我就当无事发生了。不过问题没有解决,因为空间占用量并没有释放。于是我想或许重启一下容器就会好的,结果问题来了:因为找不到 overlay2 下某个路径,无法重启。摸鱼站又下线了……

解决方法

我先试着重启 docker,systemctl restart docker,再重启容器,依旧报错。

接着试着清理不用的容器文件和镜像文件,docker system prune -f,结果也没清理出什么东西。

最后试了最激进的方法(我已经准备好到群里谢罪,重启摸鱼站了),docker system prune -a,清理了所有没在运行的容器和镜像文件,结果清理出 5G 的垃圾。重启容器,摸鱼站终于恢复了。

参考


聊聊 Docker 的存储 Overlay2