为什么Docker会在新的ubuntu映像上报告100%的磁盘使用情况?


15

我不再能够使用docker或有效运行新映像-它报告我的磁盘使用率为100%。在这里,您可以看到我正在启动ubuntu的原始副本,但它告诉我我没有磁盘空间了:

$ docker run -t -i ubuntu /bin/bash
root@3838b70bd76e:/# df -h 
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G   18G     0 100% /
none             19G   18G     0 100% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G   18G     0 100% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

另外,我正在尝试启动一个mysql实例,它给了我错误消息,我认为这些错误消息与我没有可用磁盘的事实有关。当我尝试运行orchardup / mysql时,我得到:

ERROR: 1030  Got error 28 from storage engine

这意味着它的存储空间不足。

鉴于此,我应该如何解释上面的df -h报告,以及如何确定100%的磁盘正在消耗什么?我正在使用boot2docker在OSX 10.9.4上运行docker 1.3。

谢谢。


编辑:作为一种解决方法,我先运行了boot2docker delete,然后又运行了,boot2docker init它似乎已经破坏了我的所有映像(幸运的是,我可以使用dockerfiles重建它们)。现在,当我开始一个新的ubuntu映像时:

root@f53d637e3d33:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G  373M   17G   3% /
none             19G  373M   17G   3% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G  373M   17G   3% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

好多了。但是,我仍然感到困惑,在boot2docker托管的所有映像中必须存在某种共享的全局磁盘,而以前该磁盘已被填满?


编辑2:我刚刚下载了一堆映像,现在这是运行ubuntu映像并检查可用磁盘空间时看到的内容:

root@f53d637e3d33:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G  2.7G   15G  16% /
none             19G  2.7G   15G  16% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G  2.7G   15G  16% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

从3%消耗到16%!显然,我不了解的所有映像之间都有某种共享磁盘...


您如何使用Docker容器,如何将用户/组分散(更多是由于mysql错误),对于docker,他们是在主机上共享任何内容还是纯粹是自包含的?
linuxdev2013

Answers:


1

在Windows主机上,boot2docker通过使用virtual box创建虚拟机来工作。当您运行boot2docker init时,它将创建一个虚拟机,并且默认情况下将20G分配给根磁盘。该虚拟机运行一个最小的Linux操作系统,该Linux操作系统又运行实际的docker守护进程(docker守护进程尚未在Windows上本地运行)。

连接到虚拟机的磁盘为docker映像提供存储。因此,您可以查看boot2docker init命令的其他选项来增加初始磁盘大小。这将增加可用于虚拟机的磁盘大小,但是正如Queasy指出的那样,您需要向docker守护程序添加其他选项以增加映像的可用存储。

当您在容器中运行“ df -h”时,报告的总磁盘大小是使用“ dm.basesize”选项分配给docker daemon的磁盘空间的大小。

注意:现在不建议使用boot2docker,而推荐使用Docker Toolbox。您可能需要升级到该版本,在这种情况下,您将使用“ docker-machine create”而不是“ boot2docker init”。我已经切换到docker-toolbox,所以无法测试boot2docker init所需的命令选项


0

在/ etc / sysconfig / docker-storage中修改docker config并添加以下行:

DOCKER_STORAGE_OPTIONS= --storage-opt dm.basesize=30G

在继续执行此任务之前,请记住备份您的泊坞窗,因为一旦初始化,它将删除您的数据。


--storage-opt在OSX上不受支持
Quanlong

0

考虑驱动器可能已损坏。日立(驾驶适应性测试),希捷(Seatools)和西数(西数数据救生员)均提供免费的诊断软件来帮助您确定这一点。

作为一个坏的驱动器如何占用磁盘空间的示例,我备份了1TB的驱动器,该驱动器向Windows报告它们仍然具有PETABYTES数据需要传输。

如果您的驱动器没有问题,请使用du(磁盘使用情况)查看哪个文件夹较大。du -h /usr/bindu -h /vardu -h /home/[username]/Downloads帮助查明。

编辑:我看到您正在使用OS X:您将需要使用上面提到的HDD工具作为它们的可启动选项,或者在免费的Windows PE之类的东西中使用它们,然后可以启动并运行这些工具。


0

devicemapper是docker的默认存储引擎。默认情况下,它尝试在/ var / lib / docker中预分配100Gb。但是,并不是所有的空间都真正使用了,您可以在选项中进行配置。Docker文档

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.