如果前一次 docker 启动还没问题,你没做别的什么操作,那赶紧看看你的磁盘分区是不是满了吧~~~(>_<)~~~
我的环境:
- 物理机 win7,请不要问我为啥搞了个 win7, 我也不想啊,奈何……
- Vmware 装了个虚拟机 CentOS7, 分配了120G 虚拟磁盘,做了 LVM, 然后 / 给了50G, /home给了 62G……
- 虚拟机里装了 docker
我做了什么
昨天在 docker 里跑了测试,一下子 /var/lib/docker 就整出来49G,
然后我的虚拟机根分区就 100% Use 了,
再然后, sudo service docker start 就失败了。
怎么拯救
- 养成好习惯,没事儿就
- docker images 看看,把不用的 image 删掉,尤其是标记为 <none> 的那些,用 docker rmi IMAGE_ID 删除。
- docker ps -a 看看,把不用的 container 删掉。
- 做了 LVM 的话,就考虑扩容,但是 centos7 的 lvm 扩容比较麻烦,有点小问题
- 我们大牛的建议:
- 大家用虚拟机的话建议用虚拟机的 dynamically allocated hard disk 功能,给做个 max size 很大,比如 500GB 的,这样就不用操心 LVM, LVM 扩容什么的,其实用虚拟磁盘做 LVM 没啥好处,反而性能略微变差。
- 把所有 /, /var, /home 啥的放到一个分区上,没必要分开——只针对虚拟机而言,真机上还是建议 LVM + 独立分区。
*可以看看 docker toolbox,就是 boot2docker + virtualbox + docker-machine + docker-compose 的打包版,用来做 docker host 很方便 https://www.docker.com/toolbox
其它
虚拟机用 lvm 有一个好处,shrink disk,但实际使用这个需求基本没有, 直接用 virtual disk 也可以 shrink,最土鳖的是新建磁盘,备份过去,换磁盘。。。virtualbox 内置命令可能也可以 shrink disk