【问题标题】:Docker on Ubuntu not cleaning up aufs diffUbuntu上的Docker没有清理aufs diff
【发布时间】:2017-08-28 19:14:18
【问题描述】:

我一直在 Ubuntu 16.04 LTS 虚拟机上修补 Docker (17.06.1-ce)。

我正在构建和删除 .Net Core 2 SDK 容器,这些容器大小为 1.5G。一段时间后,我完全耗尽了磁盘空间。经过一番调查后,/var/lib/docker/aufs/diff 文件夹中充满了数据,在以下文件夹中:

e17ba29a05457b2ae9acaa69aa3220b5375d9fe7bcef3abade5a7efe022a96db-init-removing
e17ba29a05457b2ae9acaa69aa3220b5375d9fe7bcef3abade5a7efe022a96db-removing
f88f1f45157e4e19c2c77321b54e6856d22501443b79ed77d785385f54e52cf8-removing
fa3cf511441251f0a5a555b8867b08767a2afd3ee4a8fa76a264d5a1a004843f-removing

我像这样删除我的容器:

docker container rm $(docker container ls -a -q)        
docker image rm $(docker image ls -a -q)

我使用 root 帐户运行所有命令,因为它是本地临时机器。

我自己尝试过的:

  • 我多次尝试创建和删除容器。结果始终如一。
  • 我在 Azure 上启动了一台 Ubuntu Server 16.04 LTS 机器,安装了 docker 并在那里进行了尝试。结果相同。
  • docker 系统修剪。结果是回收了 0 个字节。

我做错了什么来阻止 Docker 清理文件吗?非常感谢任何帮助。

亲切的问候, 奥斯卡

【问题讨论】:

  • 你的构建声明是什么?
  • 我的构建语句是:docker build -t helloworldcore。
  • 添加以下命令的输出docker images, docker system prune -f
  • docker images 会产生一个空列表(只有列名)。 docker system prune -f 的结果是:总回收空间:0B
  • 17.09 版本修复了吗?

标签: ubuntu docker


【解决方案1】:

遗憾的是,由于 AUFS 驱动程序中的一些清理删除了重命名的“-removing”层(AUFS 中“atomicRemove”策略的一部分)的延迟删除,因此看起来 Docker 17.06.1 中引入了一个错误graphdriver),如果它们没有在退出时立即被删除。此错误已通过 PR #34587 修复,它将在 17.06 和 17.07 的下一个补丁版本中。

可能可以通过master.dockerproject.com 的每晚来验证修复,尽管我不完全确定从今天开始构建哪个分支。

【讨论】:

  • 感谢您的澄清,至少我知道这不是我的用户错误。将等待下一个补丁发布,我有一个解决方法可以让我坚持到那时。
  • 这是 2 年前,我现在运行 Docker 版本 18.09.2,在 Ubuntu 16.04 上构建 6247962,即使我运行 @987654327,我的 aufs/diff 文件夹仍然很大(10.5GB) @。知道发生了什么吗?手动删除其内容是否安全?我什至找到了一个这样做的脚本:gist.github.com/justlaputa/a50908d4c935f39c39811aa5fa9fba33
  • 您是否已经退出了尚未移除的容器? docker ps -a 将显示它们。 docker system prune -a 将尝试删除所有内容;您是否使用了“-a”标志?您也可以尝试让 Docker 向您显示正在使用的磁盘空间:docker system dfdocs.docker.com/engine/reference/commandline/system_df
猜你喜欢
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 2014-10-14
  • 1970-01-01
  • 2016-12-04
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
相关资源
最近更新 更多