为什么 docker 在新的 ubuntu 映像上报告 100% 的磁盘使用率?

esi*_*erg 15 disk-space docker macos

我不再能够使用 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
Run Code Online (Sandbox Code Playgroud)

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

ERROR: 1030  Got error 28 from storage engine
Run Code Online (Sandbox Code Playgroud)

这意味着它的存储空间已用完。

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

谢谢。


编辑:作为一种解决方法,我运行了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
Run Code Online (Sandbox Code Playgroud)

好多了。但是,我仍然感到困惑,之前已填满的 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
Run Code Online (Sandbox Code Playgroud)

从 3% 到 16% 消耗!显然,我不理解的所有图像之间存在某种共享磁盘......

小智 0

修改 /etc/sysconfig/docker-storage 中的 docker 配置并添加以下行:

DOCKER_STORAGE_OPTIONS= --storage-opt dm.basesize=30G
Run Code Online (Sandbox Code Playgroud)

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