我在AWS EC2上运行了一些docker容器,/var/lib/docker/overlay2文件夹的磁盘大小增长得非常快。
我想知道删除它的内容是否安全?
或者如果docker有某种命令来释放一些磁盘使用。
更新:
我实际上已经尝试了docker系统prune -a,它回收了0Kb。
此外,我的/docker/overlay2磁盘大小比docker系统df的输出大得多
在阅读docker文档和BMitch的回答后,我相信触摸这个文件夹是一个愚蠢的想法,我会尝试其他方法来回收我的磁盘空间。
/var/lib/docker中的所有内容都是容器的文件系统。如果你停止所有的容器并修剪它们,你应该以文件夹为空结束。你可能并不想那样做,所以不要随意删除里面的内容。不要直接删除/var/lib/docker中的内容。有时你可能会侥幸逃脱,但出于很多原因,这是不可取的。
你可以这样做:
sudo bash
cd /var/lib/docker
find . -type f | xargs du -b | sort -n
您将看到的是底部显示的最大文件。如果你想,找出这些文件在什么容器里,用docker exec -ti containername——/bin/sh输入这些容器,然后删除一些文件。
你也可以把docker系统prune -a -f放在每日/每周的cron作业中,只要你不留下你所关心的停止的容器和卷。最好是找出它增长的原因,并在容器级别上纠正它们。
警告:不要在生产系统中使用
/# df
...
/dev/xvda1 51467016 39384516 9886300 80% /
...
好的,让我们先尝试系统修剪
#/ docker system prune --volumes
...
/# df
...
/dev/xvda1 51467016 38613596 10657220 79% /
...
不太好,好像清理了几兆。让我们疯狂起来吧:
/# sudo su
/# service docker stop
/# cd /var/lib/docker
/var/lib/docker# rm -rf *
/# service docker start
/var/lib/docker# df
...
/dev/xvda1 51467016 8086924 41183892 17% /
...
好了!
只需要记住,除了一次性服务器,不建议使用这种方法。此时,Docker的内部数据库将无法找到任何这些覆盖,这可能会导致意想不到的后果。