【问题标题】:docker disk space grows faster than container'sdocker 磁盘空间的增长速度比容器的快
【发布时间】:2016-03-14 18:36:15
【问题描述】:

大量修改文件、添加和删除 (leveldb) 的 Docker 容器正在以比容器本身报告的速度更快的速度增长磁盘使用量,并最终耗尽所有磁盘。

这是 df 的一张快照,还有一张。您会注意到,从主机的角度来看,磁盘空间已显着增加(300Mbytes),但容器自我报告的磁盘空间使用量仅增加了 17Mbytes。随着这种情况的继续,主机将耗尽磁盘。

Ubuntu 库存 14.04,Docker 版本 1.10.2,构建 c3959b1。

这里发生了某种类似修剪的问题吗?

    root@9e7a93cbcb02:~# df -h
    Filesystem                                              Size  Used Avail Use% Mounted on          
    /dev/mapper/docker-202:1-136171-d4[...]                 9.8G  667M  8.6G   8% /
    tmpfs                                                   1.9G     0  1.9G   0% /dev                
    tmpfs                                                   1.9G     0  1.9G   0% /sys/fs/cgroup      
    /dev/disk/by-uuid/0a76513a-37fc-43df-9833-34f8f9598ada  7.8G  2.9G  4.5G  39% /etc/hosts          
    shm                                                     64M     0   64M   0% /dev/shm        

后来:

    root@9e7a93cbcb02:~# df -h
    Filesystem                                              Size  Used Avail Use% Mounted on          
    /dev/mapper/docker-202:1-136171-d4[...]                 9.8G  684M  8.6G   8% /
    tmpfs                                                   1.9G     0  1.9G   0% /dev                
    tmpfs                                                   1.9G     0  1.9G   0% /sys/fs/cgroup      
    /dev/disk/by-uuid/0a76513a-37fc-43df-9833-34f8f9598ada  7.8G  3.2G  4.2G  43% /etc/hosts          
    shm                                                     64M     0   64M   0% /dev/shm              

【问题讨论】:

  • 我有一个非常相似的问题。我的问题原来是使用默认的 json 文件作为我的日志驱动程序。我添加了 max-size 和 max-file 选项,我不再有这个问题了。我使用的是 Amazon EC2 容器服务。尽管这可能会为其他人节省一些时间。
  • 如果自我报告的磁盘使用量增加与 docker 镜像大小相似,那么这是一个不同的问题。

标签: docker diskspace


【解决方案1】:

这是因为内核错误修复尚未传播到许多主流操作系统发行版。对于像我一样天真地在默认的 Amazon AMI 上启动 docker 的新手 Docker 用户来说,这实际上是相当糟糕的。

坚持使用 CoreOS Stable,您将不会遇到此问题。我与 CoreOS 的关系为零,坦率地说,我对不得不处理 Yet Another Distro 感到非常恼火。在 CoreOS 发行版或其他正常工作的 linux 内核中,容器和主机的磁盘空间随着容器释放或使用空间而正确地上下跟踪。我会注意到 OSX 或其他虚拟盒发行版使用 CoreOS,因此可以正常工作。

Here's a long writeup on a very similar issue,但根本原因是 devicemapper 中的修剪/丢弃问题。您需要一个相当新的 Linux 内核版本来正确处理这个问题。我什至会说 Docker 不适合使用,除非您拥有正确的 Linux 内核。有关使用哪个发行版的讨论,请参阅该文章。

请注意,上面的文章仅涉及 docker 容器和图像的管理,但 AFAICT 它也会影响容器本身在正常添加/删除文件或块期间释放磁盘空间的尝试。

注意您的云提供商用于云容器管理的发行版。

【讨论】:

    猜你喜欢
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    相关资源
    最近更新 更多