正在修改文件,添加和删除(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
答案 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也会影响容器本身在正常添加/删除文件或块期间释放磁盘空间的尝试。
请注意您的云提供商用于云容器管理的发行版。