帮助清理 var/lib/docker

帮助清理 var/lib/docker

我把 ubuntu 18.04 上的 docker 搞乱了,现在我的磁盘上几乎没有剩余空间了。

  • 我尝试将 var/lib/docker 移动到 /home 并建立符号链接以便使用一些重量级的图像(nvidia tlt 和 nvidia digits),因为我的 /home 在另一个分区上。
  • 当事情不起作用时,我删除了链接并将文件夹移回其所属位置。
  • 在我看来,当我测试它是否有效时,就在将文件夹移回之前,ubuntu 重新创建了该文件夹,而当我进行移动时,所有内容都奇怪地合并了。

现在的问题是如何让一切恢复正常(希望不是重新安装 ubuntu)。我希望有一些多余的文件可以删除。

我还有一些其他图像不再显示sudo docker images,但我没有删除它们。一些容器也是如此

当我执行时sudo tree var/lib/docker > tree.txt我得到此输出(大小为 26.7 MB,大得可笑,不是吗?)


刚刚检查了一下,这个文件夹的大小是 24GB。tlt 映像是 7,我假设容器可能相同,仍有近 10 GB(根磁盘的 25%)的可回收空间。

任何帮助都将不胜感激。谢谢。


这是@Giorgos Saridakis 回答后的树,现在它的大小是 20.2 MB

答案1

  • service docker stop移动文件夹之前要做的事情
  • 如果将 /var/lib/docker 放在其他地方,请使用绑定mount ,例如mount -o bind /external/disk/docker /var/lib/docker,还可以“保护”文件夹,防止在 mount 之前写入文件chattr +i /Var/lib/docker
  • 最好从撰写文件或docker pull图像重新启动容器,因为你可能已经用你描述的步骤弄乱了覆盖
  • 文件夹大小也来自docker文件系统的实现,而文件系统被拉取为存档然后提取
  • 对于 docker 镜像来说,7GB 不太可能太大
  • 如果你有大量的构建缓存/悬空镜像/停止的容器,那么docker system prune -a它就是你的朋友

答案2

我冒险解决了这个问题。我sudo tree --du -h /var/lib/docker > tree.txt也使用命令查看文件夹大小,发现里面还有另一个“docker”文件夹/var/lib/docker/volumes,大小为 6.8 GB,与 的分布相同/var/lib/doclker。在确认朋友没有这个文件夹后,我就冒险做了以下事情。

  • sudo docker stop
  • sudo mv /var/lib/docker/volumes/docker /路径/到/一个/外部/驱动器/文件夹
  • sudo docker 启动

它运行起来没有问题,重启后一切正常,我可以像往常一样运行 tlt 映像。谢谢大家的帮助,我知道我很鲁莽,但我也准备格式化我的驱动器,所以我没有什么可失去的(如果你,未来的读者看到这个,要比我更小心)。再次感谢你们!

相关内容