如何减小 Vagrant VM 映像的大小
Posted
技术标签:
【中文标题】如何减小 Vagrant VM 映像的大小【英文标题】:how to reduce the size of Vagrant VM image 【发布时间】:2016-06-14 02:44:00 【问题描述】:我从这张图片https://atlas.hashicorp.com/bento/boxes/centos-6.7 启动了一个虚拟机,它的大小只有 2-300MB。然后我安装了一些包(java、node、docker 等),以便为我的应用创建更快的启动映像。
然后我运行 yum clean all
和 vagrant package --output newimage.box
,但 newimage.box
的大小约为 3GB。
我一直在寻找一种方法来压缩/减小此图像的大小,但没有找到很多。我发现有人提到zerofree
,但一直无法在 CentOS 机器上安装它。
任何建议/建议将不胜感激。
【问题讨论】:
【参考方案1】:您可以查看一个 cleanup script 示例,该示例用于打包程序以缩小图像大小。
重点是
echo "==> Clean up yum cache of metadata and packages to save space"
yum -y --enablerepo='*' clean all
echo "==> Clear core files"
rm -f /core*
echo "==> Removing temporary files used to build box"
rm -rf /tmp/*
echo '==> Zeroing out empty area to save space in the final image'
dd if=/dev/zero of=/EMPTY bs=1M
rm -f /EMPTY
【讨论】:
谢谢!这有助于将其大小减少到 1.85GB。你认为这是最小的,还是有办法进一步压缩它? 您可以向df -h
查询磁盘使用情况,这取决于您安装的所有内容,它可能是最小的
df -h
报告为/dev/sda1 477M 56M 396M 13% /boot
。在我看来,安装这些软件包会使图像大小增加 8-9 倍。【参考方案2】:
Zerofree 应该很容易编译,它是一个依赖于 ext2 的单个 c 文件。 (官网https://frippery.org/uml/)
根据我使用 vdi 文件的经验,在运行 VBoxManage 的 compact 命令之前,大小不会有太大变化。看起来 vagrant 使用 VDMK 磁盘。 VirtualBox afaik 不支持压缩 VDMK,但此解决方法可能有效 https://***.com/a/35620550/7217931 。 VMware 工作站据说可以开箱即用。
我宁愿将它作为评论发布,但显然,你需要更多的声誉。
【讨论】:
以上是关于如何减小 Vagrant VM 映像的大小的主要内容,如果未能解决你的问题,请参考以下文章
如何减小 RHEL/Centos/Fedora Docker 镜像的大小