我在AWS EC2上运行了一些docker容器,/ var / lib / docker / overlay2文件夹的磁盘大小增长得非常快。
我想知道删除其内容是否安全?或者如果docker有某种命令来释放一些磁盘使用量。
谢谢!
更新:
我实际上已经尝试了docker system prune -a
,它已经回收了0Kb。
我的/ docker / overlay2磁盘大小也比docker system df
的输出大得多
在阅读了docker文档和BMitch的回答之后,我认为触摸这个文件夹是一个愚蠢的想法,我会尝试其他方法来回收我的磁盘空间。
Docker使用/ var / lib / docker存储图像,容器和本地命名卷。删除此操作可能会导致数据丢失,并可能导致引擎无法运行。 overlay2子目录专门包含图像和容器的各种filesystem layers。
要清理未使用的容器和图像,请参阅docker system prune
。还有删除卷甚至标记图像的选项,但由于数据丢失的可能性,默认情况下不会启用它们。
我有这个问题......这是巨大的日志。日志在这里:
/var/lib/docker/containers/<container id>/<container id>-json.log
您可以在运行命令行或撰写文件中对此进行管理。看到:Configure logging drivers
我个人将这3行添加到我的docker-compose.yml文件中:
my_container:
logging:
options:
max-size: 10m
快速增长的overlay2
也有问题
/var/lib/docker/overlay2
- 是一个文件夹,其中docker存储容器的可写层。 docker system prune -a
- 只有在容器被停止和移除时才可以工作。
在我的我能够通过进入overlay2
和调查弄清楚消耗空间是什么。
该文件夹包含其他散列命名文件夹。每个都有几个文件夹,包括diff
文件夹。
diff
文件夹 - 包含由具有精确文件夹结构的容器写入的实际差异作为您的容器(至少在我的情况下 - ubuntu 18 ...)
所以我用du -hsc /var/lib/docker/overlay2/LONGHASHHHHHHH/diff/tmp
弄清楚我的容器里面的/tmp
是被污染的文件夹。
所以作为一种解决方法,我使用-v /tmp/container-data/tmp:/tmp
命令的docker run
参数将内部/tmp
文件夹映射到主机并在主机上设置cron来清理该文件夹。
cron任务很简单:
sudo nano /etc/crontab
*/30 * * * * root rm -rf /tmp/container-data/tmp/*
save and exit
注意:overlay2
是系统docker文件夹,他们可以随时更改它的结构。以上所有内容都是基于我在那里看到的。不得不进入docker文件夹结构只是因为系统完全没有空间,甚至不允许我ssh到docker容器。
我发现这对我来说效果最好:
docker image prune --all
默认情况下,Docker不会删除命名图像,即使它们未使用。此命令将删除未使用的图像。
请注意,图像中的每个图层都是/usr/lib/docker/overlay2/
文件夹中的文件夹。
我用“docker system prune -a”清理了卷和overlay2下的所有文件
[root@jasontest volumes]# docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: ubuntu:12.04
untagged: ubuntu@sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005
deleted: sha256:5b117edd0b767986092e9f721ba2364951b0a271f53f1f41aff9dd1861c2d4fe
deleted: sha256:8c7f3d7534c80107e3a4155989c3be30b431624c61973d142822b12b0001ece8
deleted: sha256:969d5a4e73ab4e4b89222136eeef2b09e711653b38266ef99d4e7a1f6ea984f4
deleted: sha256:871522beabc173098da87018264cf3e63481628c5080bd728b90f268793d9840
deleted: sha256:f13e8e542cae571644e2f4af25668fadfe094c0854176a725ebf4fdec7dae981
deleted: sha256:58bcc73dcf4050a4955916a0dcb7e5f9c331bf547d31e22052f1b5fa16cf63f8
untagged: osixia/openldap:1.2.1
untagged: osixia/openldap@sha256:6ceb347feb37d421fcabd80f73e3dc6578022d59220cab717172ea69c38582ec
deleted: sha256:a562f6fd60c7ef2adbea30d6271af8058c859804b2f36c270055344739c06d64
deleted: sha256:90efa8a88d923fb1723bea8f1082d4741b588f7fbcf3359f38e8583efa53827d
deleted: sha256:8d77930b93c88d2cdfdab0880f3f0b6b8be191c23b04c61fa1a6960cbeef3fe6
deleted: sha256:dd9f76264bf3efd36f11c6231a0e1801c80d6b4ca698cd6fa2ff66dbd44c3683
deleted: sha256:00efc4fb5e8a8e3ce0cb0047e4c697646c88b68388221a6bd7aa697529267554
deleted: sha256:e64e6259fd63679a3b9ac25728f250c3afe49dbe457a1a80550b7f1ccf68458a
deleted: sha256:da7d34d626d2758a01afe816a9434e85dffbafbd96eb04b62ec69029dae9665d
deleted: sha256:b132dace06fa7e22346de5ca1ae0c2bf9acfb49fe9dbec4290a127b80380fe5a
deleted: sha256:d626a8ad97a1f9c1f2c4db3814751ada64f60aed927764a3f994fcd88363b659
untagged: centos:centos7
untagged: centos@sha256:2671f7a3eea36ce43609e9fe7435ade83094291055f1c96d9d1d1d7c0b986a5d
deleted: sha256:ff426288ea903fcf8d91aca97460c613348f7a27195606b45f19ae91776ca23d
deleted: sha256:e15afa4858b655f8a5da4c4a41e05b908229f6fab8543434db79207478511ff7
Total reclaimed space: 533.3MB
[root@jasontest volumes]# ls -alth
total 32K
-rw------- 1 root root 32K May 23 21:14 metadata.db
drwx------ 2 root root 4.0K May 23 21:14 .
drwx--x--x 14 root root 4.0K May 21 20:26 ..
警告:请勿在生产系统中使用
/# 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的内部数据库将无法找到任何这些叠加层,并可能导致意外后果。