我在docker中运行gzip.c的代码优化器,在这个过程中overlay
变得无限大,吞噬了我的磁盘。
root@id17:/var/lib/docker/overlay2/fe6987bf6e686e771ba7b08cda40aa477979512e182ad30120db037024638aa0# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/sda5 245G 245G 0 100% /
...
overlay 245G 245G 0 100% /var/lib/docker/overlay2/fe6987bf6e686e771ba7b08cda40aa477979512e182ad30120db037024638aa0/merged
通过使用du -h --max-depth=1
,我发现是diff
和merged
消耗了我的磁盘(是吗?)
root@id17:/var/lib/docker/overlay2/fe6987bf6e686e771ba7b08cda40aa477979512e182ad30120db037024638aa0# du -h --max-depth=1
125G ./diff
129G ./merged
8.0K ./work
254G .
然而,当我重新启动dockersystemctl restart docker
时,它恢复正常。
root@eb9bf52aa3a3:/# df -h
Filesystem Size Used Avail Use% Mounted on
overlay 245G 190G 43G 82% /
...
/dev/sda5 245G 190G 43G 82% /etc/hosts
...
root@id17:/var/lib/docker/overlay2/fe6987bf6e686e771ba7b08cda40aa477979512e182ad30120db037024638aa0# du -h --max-depth=1
125G ./diff
129G ./merged
8.0K ./work
254G .
已经出版好几次了,我不能继续工作了。所以我真的很想知道我怎么才能摆脱这个问题。真的谢谢你:-)
如果docker文件系统正在增长,这通常表示容器日志,或者容器中的文件系统更改。您可以在docker logs
中看到日志,在docker diff
中显示文件系统更改。因为你看到的是一个很大的diff文件夹,所以应该是后者。
这些文件系统更改将在容器重新启动后继续存在,当容器被移除并替换为新容器时,它们将被清除。因此,如果重新启动容器解决它,我怀疑是您的应用程序正在删除磁盘上的文件,但仍然有文件句柄向内核打开,可能仍在写这些文件句柄。
另一个选项是停止或启动你的应用程序正在删除文件。