清理 Docker/overlay2 目录是否安全?

367

我在AWS EC2上运行了一些 Docker 容器,但是 /var/lib/docker/overlay2 文件夹的磁盘空间占用增长得非常快。

我想知道是否安全删除其内容?或者 Docker 是否有一些命令可以释放一些磁盘空间。


更新:

我已经尝试过docker system prune -a,但是它只回收了 0KB 的空间。

此外,我的 /docker/overlay2 磁盘大小要比 docker system df 命令输出的结果大得多。

阅读了 Docker 文档和 BMitch 的答案后,我认为触碰这个文件夹是一个愚蠢的想法,我将尝试其他方法来释放我的磁盘空间。


5
你有没有找到这个问题的答案?我仍然遇到同样的问题。 - Saurabh_Jhingan
22
我运行了 docker image prune --alldocker system prune -a 命令。这使我的磁盘空间回收了约50GB,原本这些文件存放在 /var/lib/docker/overlay2 目录下。但是,仅运行 docker system prune -a 命令就足够了。另外,我的配置信息如下:操作系统:Ubuntu 20Docker版本:19.03.12 - Binita Bharati
1
修剪没帮到我,尝试这个命令代替:docker volume rm $(docker volume ls -qf dangling=true) 更多信息请参考此链接:https://dev59.com/tVYN5IYBdhLWcg3w7MC5#75928154 - lambodar
3
如果你不确定docker system prune -a是否真的能清除所有东西,你可以运行以下命令来查找被Docker忽略的文件夹。find /var/lib/docker/overlay2 -mindepth 1 -maxdepth 1 -type d \! -exec bash -c "docker ps -q | xargs docker inspect --format '{{.GraphDriver.Data}}'| grep -q "{} \; -print请注意,这将识别出任何在正在运行的Docker镜像的GraphDriver中未提及的文件夹。你应该会找到一个名为l的文件夹,其中包含了指向其他所有文件夹的链接列表。 - Tobi Oetiker
根据@TobiOetiker的评论,我冒险手动删除了find命令的输出(首先完全停止了Docker),除了“l”文件夹。到目前为止,它重新启动并正常运行,并且我恢复了大约30GB的磁盘空间。 - undefined
24个回答

0
在我的情况下,我的磁盘空间正在被占满,我发现我的网页服务器容器中的/tmp目录里充满了旧的PNG文件。显然,这些文件在上传后应用程序没有被删除链接。
我的解决方案比这里的所有方法都简单。我只是进入了容器:
docker exec -it {container_name} bash
然后删除了 /tmp/*.png,释放了大量的磁盘空间。有时候解决方案很简单,而且几乎总是/tmp目录占满了空间。

0

/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 system prune -a -f放在每日/每周的cron作业中,只要你不留下你关心的已停止的容器和卷。更好的方法是找出它增长的原因,并在容器级别进行纠正。


-2
docker system prune -af && docker image prune -af

3
这非常危险。 如果不使用f选项,对我来说它可以保存我的图像,但是如果它们当前没有运行,它也可能会删除图像。 请改用以下命令: docker system prune -a && docker volume prune - Eran Yogev
1
另外一点需要注意:-f 表示强制删除,-a 表示全部删除,即使你继续执行也会删除图像。 不同之处在于,如果你没有添加“f”,它会提示你警告。 - Eran Yogev

-7

我使用了 "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 ..

3
该命令并没有回答问题,建议的命令甚至已经在问题文本中提到了。 - MBT
2
所以,这被投票否定得一塌糊涂,但下面完全相同的答案却被投票赞成了41次。这个网站很有问题。 - Adham Zahran
1
可能是因为它与所选答案相同。 - ki9

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