如何减小 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 allvagrant 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 映像的大小的主要内容,如果未能解决你的问题,请参考以下文章

流浪者没有启动。创建 VM 的用户与当前用户不匹配

如何减小 RHEL/Centos/Fedora Docker 镜像的大小

如何通过Vagrant设置VM名称?

如何控制 Vagrant 用于配置 VM 的 Chef 版本?

Vagrant 搞砸了代码?

ProxmoxVE(PVE) 减小缩减虚拟机硬盘设置的空间大小