最近在做數(shù)據(jù)流水線的spike以及直播的一些實(shí)驗(yàn)準(zhǔn)備,需要在本地運(yùn)行很多的容器,沒過多久就發(fā)現(xiàn)有些容器啟動失敗,提示磁盤不足。
我對這個提示感到困惑,于是,docker exec到一個已經(jīng)運(yùn)行的容器中,執(zhí)行df -h,結(jié)果如下:
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
真的沒有空間了……,開始不能理解為什么會出現(xiàn)這樣的情況。首先想到的是docker mac client的設(shè)置,可能會有虛擬機(jī)磁盤的大小的配置項(xiàng)……,但是竟然沒有, whot!。
其次想到的是hyperkit,Docker mac 客戶端依賴的hypervisor,來修改它的配置,結(jié)果也沒有這樣的選項(xiàng)。
搜索了下,查到了這篇帖子。Docker在Mac下的vm 磁盤文件的路徑是
~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
我查看了下這個文件,大小約20G。那現(xiàn)在的問題怎么把這個磁盤文件增大。
考慮了半天,查詢了資料,問了同事也沒有找到可行的解決方案。文章里面介紹的用qemu-image resize之后重新分區(qū)的方式很容易破壞原有的磁盤。最后只能用qemu-image創(chuàng)建一個更大的虛擬分區(qū)文件,然后刪除舊的Docker.qcow2文件,。操作如下:
mv Docker.qcow2 Docker.qcow2.bakbrew install qemu- 創(chuàng)建更大空間虛擬磁盤
~> 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
- 重啟docker
- 如果成功,刪掉
Docker.qcow2.bak這個舊文件
不足的地方就是原有鏡像、volume、容器都不見了,還好沒什么特別重要的數(shù)據(jù).從帖子發(fā)現(xiàn)每個人的默認(rèn)Docker vm磁盤大小是不一樣的,這可能是根據(jù)可用磁盤空間乘以一個比例去設(shè)置的,這個時候突然想起應(yīng)該在公司發(fā)的MBP本磁盤大小的郵件,我應(yīng)該在下面頂一記來著…… 512G++。