Docker 清理 - 我能删除 /var/lib/docker/containers 下的旧目录吗?

3

我在系统中有16个Docker容器,它们在/var/lib/docker/overlay2/<id>(每个目录大约30GB..总计30*16 GB)下存储了大量数据。这些数据主要由其中的diffmerged目录所占用。

每次我执行docker-compose down,然后执行docker-compose up,它就会创建另外一组16个目录并开始在其中存储数据。但它不会清理旧的overlay2目录。这导致了空间不足的问题。

  1. 请告诉我我是否可以执行rm -rf /var/lib/docker/overlay2/来清除旧目录, 或者如何释放空间。
  2. 我需要等待几个小时才能在执行docker-compose down之后回收空间吗?

注意:我已经执行了docker system prune -a


"rm -rf /var/lib/docker/overlay2/"被重复表明旧的已经过时。删除它们并检查(在备份之前!) - kesarling He-Him
/var/lib/docker/overlay2并没有重复,我的意思是当容器被删除时,overlay2下的目录没有被清理。 - Aswin George
他们应该是吗?如果是的话,那就继续。 - kesarling He-Him
1个回答

2

1)如果我可以删除旧目录的 /var/lib/docker/overlay2/,或者如何释放空间,请告诉我。

只有您可以决定。
当我怀疑 /var/lib/docker/overlay2/foo123 文件夹中存在未使用的数据时,我首先检查该文件夹的内容。它通常包含镜像内容。通过文件的修改日期和文件内容,我有很高的概率确定该文件夹是否无用。
当我确信它是无用的时,我使用 rm -rf ... 删除它。请注意,删除可能会失败,因为文件挂载,在这种情况下,我需要先识别并卸载文件。
如果我不确定它是否无用,我会在删除之前执行备份,例如: cp -a /var/lib/docker/overlay2/foo123 /var/lib/docker/overlay2/backup-foo123

2)在 docker-compose down 后需要等待几个小时才能回收空间吗?

仅使用 Docker,不需要等待。数据必须显式地移除(例如:docker container rm FOOdocker system prunedocker system prune -adocker image rm FOO 等)。
但 Docker 并不完美,所以有时可能会存在过时的数据。
通常,我会不时使用 du -sh */ | sort -h 检查 Docker 中的大文件夹。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接