我把 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 映像。谢谢大家的帮助,我知道我很鲁莽,但我也准备格式化我的驱动器,所以我没有什么可失去的(如果你,未来的读者看到这个,要比我更小心)。再次感谢你们!