调整Docker Mac Client的磁盘大小

最近在做数据流水线的spike以及直播的一些实验准备,需要在本地运行很多的容器,没过多久就发现有些容器启动失败,提示磁盘不足。
我对这个提示感到困惑,于是,docker exec到一个已经运行的容器中,执行df -h,结果如下:

Filesystem                Size      Used Available Use% Mounted on
none                     19.2G      19.2G     0G   100% /
tmpfs                     3.9G         0      3.9G   0% /dev
tmpfs                     3.9G         0      3.9G   0% /sys/fs/cgroup
/dev/vda2                19.2G      19.2G     41.3G   100% /etc/resolv.conf
/dev/vda2                19.2G      19.2G     41.3G   100% /etc/hostname
/dev/vda2                19.2G      19.2G     41.3G   100% /etc/hosts
shm                      64.0M         0     64.0M   0% /dev/shm
tmpfs                     3.9G         0      3.9G   0% /proc/kcore
tmpfs                     3.9G         0      3.9G   0% /proc/timer_list
tmpfs                     3.9G         0      3.9G   0% /proc/sched_debug

真的没有空间了……,开始不能理解为什么会出现这样的情况。首先想到的是docker mac client的设置,可能会有虚拟机磁盘的大小的配置项……,但是竟然没有, whot!。
其次想到的是hyperkit,Docker mac 客户端依赖的hypervisor,来修改它的配置,结果也没有这样的选项。
搜索了下,查到了这篇帖子。Docker在Mac下的vm 磁盘文件的路径是

~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

我查看了下这个文件,大小约20G。那现在的问题怎么把这个磁盘文件增大。
考虑了半天,查询了资料,问了同事也没有找到可行的解决方案。文章里面介绍的用qemu-image resize之后重新分区的方式很容易破坏原有的磁盘。最后只能用qemu-image创建一个更大的虚拟分区文件,然后删除旧的Docker.qcow2文件,。操作如下:

  1. mv Docker.qcow2 Docker.qcow2.bak
  2. brew install qemu
  3. 创建更大空间虚拟磁盘
~> qemu-img create -f qcow2 Docker.qcow2 50G
Formatting 'Docker.qcow2', fmt=qcow2 size=53687091200 encryption=off cluster_size=65536 lazy_refcounts=off refcount_bits=16
  1. 重启docker
  2. 如果成功,删掉Docker.qcow2.bak这个旧文件

不足的地方就是原有镜像、volume、容器都不见了,还好没什么特别重要的数据.从帖子发现每个人的默认Docker vm磁盘大小是不一样的,这可能是根据可用磁盘空间乘以一个比例去设置的,这个时候突然想起应该在公司发的MBP本磁盘大小的邮件,我应该在下面顶一记来着…… 512G++。

推荐阅读更多精彩内容