..

调试日记:Docker Desktop 磁盘空间问题

问题

给 Docker Desktop for mac 分配了 64GB 的磁盘空间,但是一直报磁盘空间不够。我看了下 Images 跟 Containers,明显感觉已使用的空间远没达到 64GB。

docker system df 看了占用情况,也是远远低于 64GB的:

❯ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          1         1         163.8kB   -8551B (-5%)
Containers      1         1         4.096kB   0B (0%)
Local Volumes   10        0         89.38MB   89.38MB (100%)
Build Cache     0         0         0B        0B

调试历程

去搜索了一下,大部分都是用 docker system prune 这个方法去清理磁盘空间的,但是从 df 命令也看出来了,其实 docker system 能统计到的空间就一点点,那么这个 prune 命令就没有意义了,每次能回收的空间就一点点。

于是我怀疑是什么文件占用不在 Image、Containers 以及 Build cache 里。找了 一个方法 ssh 到 Docker Desktop 的虚拟机上。在 /var/lib/docker 下用 du -hd1 | sort -hr 发现 overlay2 目录的占用极大!

再进一步分析了 overlay2 下前几个占用大的文件,估计应该都是 nodejs 相关的文件层。很奇怪,最近没用 docker 运行 nodejs 项目(没有涉及到的 Images、Container 等),但是文件显示是几天前创建的。

处理方案

原本是增加 Docker Desktop 的磁盘空间,但是后来又决定把 overlay2 下的文件全删除了。因为是本地软件,暂时应该也不会有什么数据丢失问题。

删除后重启了一下 Docker Desktop,跑了几个 Containers,除了 Images 要重拉,暂时没发现什么大问题。 再进去虚拟机上看下 /var/lib/docker/overlay2 目录,一个文件都没有。探索暂时搁置,有机会再深入了解。