如何清理Docker

时间:2017-08-21 13:13:03

标签: docker

我刚注意到笔记本电脑上的磁盘空间不足。 Docker使用了很多mate-disk-usage-analyzer

Enter image description here

docker/aufs/diff文件夹包含以-removing结尾的152个文件夹。

我已经运行了以下命令来清理

Kill all running containers:
# docker kill $(docker ps -q)

Delete all stopped containers
# docker rm $(docker ps -a -q)

Delete all images
# docker rmi $(docker images -q)

Remove unused data
# docker system prune

And some more
# docker system prune -af

但是我执行了这些命令后,拍摄了截图。

什么是docker/aufs/diff,为什么会消耗这么多空间?如何清理它?

我有Docker版本17.06.1-ce,build 874a737。它发生在清理之后,所以这绝对是一个问题。

5 个答案:

答案 0 :(得分:21)

以下是一个彻底的解决方案。 IT DELETES ALL 您的DOCKER STUFF。包括音量

$ sudo su
# service docker stop
# cd /var/lib/docker
# rm -rf *
# service docker start

有关详细信息,请参阅https://github.com/moby/moby/issues/22207#issuecomment-295754078

可能不是/ var / lib / docker

在您的情况下,泊坞窗位置可能会有所不同。您可以使用磁盘使用情况分析器(例如mate-disk-usage-analyzer)来查找最需要空间的文件夹。

请参阅Where are Docker images stored on the host machine?

答案 1 :(得分:9)

此目录是使用AUFS存储驱动程序时存储容器rootfs层的位置(默认情况下,如果加载了AUFS内核模块)。

如果你有一堆*-removing dirs,这是由于删除尝试失败造成的。这可能由于各种原因而发生,最常见的是unmountdevice or resource busy而失败。

在Docker 17.06之前,如果您使用docker rm -f删除容器,即使在容器清理中某处出现了某些错误(例如,未能删除rootfs层),也会删除所有容器元数据。 在17.06中,它将不再删除容器元数据,而是将容器标记为Dead状态,以便您可以尝试再次将其删除。

你可以安全地删除这些目录,但我会先停止docker,然后删除,然后启动docker备份。

答案 2 :(得分:1)

docker将大量演出分为三个主要领域:

  1. 检查下载和编译的图像。 通过运行以下命令来清理未使用和无效的图像

    $ docker image修剪-a

  2. Docker创建了大量的卷,其中一些卷来自死容器,不再使用 清理体积并使用

    回收空间

    $ docker system prune -af &&
    docker image prune -af &&
    docker系统prune -af --volumes &&
    docker系统df

  3. Docker容器日志在生成GB日志方面也非常臭名昭著 容器层的overlay2存储也是吞噬GB的另一个来源。 一种更好的方法是计算docker映像的大小,然后按照以下存储和日志上限说明来限制docker容器。 对于这些功能,请使用docker V19及更高版本。

    $ docker run -it-存储选择大小= 2G --log-opt模式=非阻塞--log-opt最大缓冲区大小= 4m浅顶软呢帽/ bin / bash

答案 3 :(得分:0)

我有同样的问题。 就我而言,解决方案是:

  1. 查看所有图像:
    docker图片

  2. 删除旧的未使用的图像:
    docker rmi IMAGE_ID

  3. 可能您需要修剪已停止的容器:
    docker容器修剪

p.s。 docker --help是一个很好的解决方案:)

答案 4 :(得分:0)

请注意,这实际上是一个已知问题,但仍未解决:https://github.com/moby/moby/issues/37724 如果您遇到相同的问题,我建议在GitHub上“竖起大拇指”该问题,以便尽快解决。