docker磁盘空间比容器增长得快

时间:2016-03-14 18:36:16

标签: docker diskspace

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

这是df和a秒的一个快照。您会注意到,从主机的角度来看,磁盘空间已大大增加(300M字节),但容器自行报告的磁盘空间使用量仅增加了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              

1 个答案:

答案 0 :(得分:0)

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

坚持使用CoreOS Stable,你不会遇到这个问题。我与CoreOS没有任何关系,坦率地说,我非常恼火不得不与Yet Another Distro打交道。在CoreOS发行版或其他正常工作的Linux内核中,容器和主机的磁盘空间在容器释放或使用空间时正确地上下跟踪。我注意到OSX或其他虚拟盒子发行版使用CoreOS,因此可以正常工作。

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

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

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