如何清理Docker

Mar*_*oma 36 docker

我刚注意到笔记本电脑上的磁盘空间不足.Docker使用了相当多的东西mate-disk-usage-analyzer:

在此输入图像描述

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

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

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
Run Code Online (Sandbox Code Playgroud)

但截图是我执行这些命令拍摄的.

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

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

Mar*_*oma 26

以下是一个彻底的解决方案.它删除了你所有的 DOCKER STUFF.包括体积.

$ sudo su
# service docker stop
# cd /var/lib/docker
# rm -rf *
# service docker start
Run Code Online (Sandbox Code Playgroud)

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

它可能不是/ var/lib/docker

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

请参阅Docker映像存储在主机上的位置?

  • 我同意这个警告,我不同意人们应该得到数据丢失的观点.堆栈溢出有不同类型的人具有不同的经验水平,因此不需要对新手有毒. (4认同)
  • 这是一个强力解决方案,将删除所有容器,图像和卷.OP可能希望保留当前正在使用的图像和卷​​. (3认同)
  • @k0pernikus 我是 OP。我已经删除了所有图像和卷。正如我在问题中所写。 (3认同)

vin*_*rma 18

docker 将大量工作分为三个主要领域:

  1. 检查下载和编译的图像。通过运行以下命令来清理未使用和死的图像
    docker image prune -a 
Run Code Online (Sandbox Code Playgroud)
  1. Docker 创建了大量卷,其中一些卷来自不再使用的死容器,请使用以下命令清理卷并回收空间
    docker system prune -af && \
    docker image prune -af && \
    docker system prune -af --volumes && \
    docker system df
Run Code Online (Sandbox Code Playgroud)
  1. Docker 容器日志在生成 GB 日志覆盖层方面也非常臭名昭著,容器层的存储也是 GB 消耗的另一个来源。一种更好的方法是计算 docker 映像的大小,然后使用以下存储和日志上限说明限制 docker 容器。对于这些功能,请使用 docker V19 及更高版本。
    docker run -it --storage-opt size=2G --log-opt mode=non-blocking --log-opt max-buffer-size=4m fedora /bin/bash
Run Code Online (Sandbox Code Playgroud)


cpu*_*y83 9

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

如果你有一堆*-removingdirs,这是由删除尝试失败引起的.这可能由于各种原因而发生,最常见的是unmount由于失败device or resource busy.

多克尔17.06之前,如果您使用docker rm -f删除容器的所有容器的元数据将即使有一些错误的地方在容器的清理移除(例如,不能删除根文件系统层).在17.06中,它将不再删除容器元数据,而是使用Dead状态标记容器,以便您可以尝试再次删除它.

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

  • 另请注意,17.06.1中的明显回归可能导致您的问题.这在即将到来的17.06.2中得到修复. (2认同)
  • 你能否添加一个今天应该用来清理码头工具的命令列表? (2认同)