文档章节

vagrant压缩打包镜像容量

格通
 格通
发布于 2016/08/24 10:48
字数 618
阅读 138
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

这里主要参考https://gist.github.com/adrienbrault/3775253

这里是脚本内容 :

#!/bin/sh

# Credits to:
#  - http://vstone.eu/reducing-vagrant-box-size/
#  - https://github.com/mitchellh/vagrant/issues/343

aptitude -y purge ri
aptitude -y purge installation-report landscape-common wireless-tools wpasupplicant ubuntu-serverguide
aptitude -y purge python-dbus libnl1 python-smartpm python-twisted-core libiw30
aptitude -y purge python-twisted-bin libdbus-glib-1-2 python-pexpect python-pycurl python-serial python-gobject python-pam python-openssl libffi5
apt-get purge -y linux-image-3.0.0-12-generic-pae

# Remove APT cache
apt-get clean -y
apt-get autoclean -y

# Zero free space to aid VM compression
dd if=/dev/zero of=/EMPTY bs=1M
rm -f /EMPTY

# Remove bash history
unset HISTFILE
rm -f /root/.bash_history
rm -f /home/vagrant/.bash_history

# Cleanup log files
find /var/log -type f | while read f; do echo -ne '' > $f; done;

# Whiteout root
count=`df --sync -kP / | tail -n1  | awk -F ' ' '{print $4}'`; 
let count--
dd if=/dev/zero of=/tmp/whitespace bs=1024 count=$count;
rm /tmp/whitespace;
 
# Whiteout /boot
count=`df --sync -kP /boot | tail -n1 | awk -F ' ' '{print $4}'`;
let count--
dd if=/dev/zero of=/boot/whitespace bs=1024 count=$count;
rm /boot/whitespace;
 
swappart=$(cat /proc/swaps | grep -v Filename | tail -n1 | awk -F ' ' '{print $1}')
if [ "$swappart" != "" ]; then
  swapoff $swappart;
  dd if=/dev/zero of=$swappart;
  mkswap $swappart;
  swapon $swappart;
fi

上面最后会输出swap分区的新的uuid,把这个新的uuid填到/etc/fstab就可以了。

debian下使用#!/bin/bash替换#!/bin/sh

打包的容量从5.1G下降到2.3G,效果还是很明显的。

上面打包得到的镜像文件,这个在编译文件的时候遇到问题:

解决: g++: internal compiler error: Killed (program cc1plus)

g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
 
主要原因大体上是因为内存不足,有点坑 临时使用交换分区来解决吧
 
sudo dd if=/dev/zero of=/swapfile bs=64M count=16
sudo mkswap /swapfile
sudo swapon /swapfile

After compiling, you may wish to

Code:
sudo swapoff /swapfile
sudo rm /swapfile

最后发现是vagrant镜像重新初始化后,swap分区没有挂载上导致上面的情况出现,我们要重新挂载这个swap分区。

1. 确定swap分区没有挂载:

cat /proc/swaps 
Filename                                Type            Size    Used    Priority

上面没有显示挂载的分区,那就是没有挂载上。

2.确定swap分区所在:

#fdisk -l
Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 40136703 40134656 19.1G 83 Linux
/dev/sda2       40138750 41940991  1802242  880M  5 Extended
/dev/sda5       40138752 41940991  1802240  880M 82 Linux swap / Solaris

可以看到/dev/sda5 的分区类型是linux swap / Solaris,这个就是我们要挂载的swap分区。

3. 确定swap分区的uuid,

# blkid /dev/sda5
/dev/sda5: UUID="c41a274b-d2b4-4f33-8188-e75da63adade" TYPE="swap" PARTUUID="1abd93b2-05"

/dev/sda5 的uuid就是c41a274b-d2b4-4f33-8188-e75da63adade

4.修改/etc/fstab,使系统自动挂载上。添加下面的选项:

UUID=c41a274b-d2b4-4f33-8188-e75da63adade none            swap    sw              0       0

5.挂载所有分区,

mount -a

或者重启就可以了。

© 著作权归作者所有

格通

格通

粉丝 6
博文 156
码字总数 39155
作品 0
广州
程序员
私信 提问
使用vagrant+VirtualBox搭建虚拟开发环境

Vagrant是一款用来构建虚拟开发环境的外挂工具,可以简化虚拟机配置和管理。它底层支持VirtualBox、VMware、AWS等,非常适合使用php/python/ruby/java语言开发web应用,“代码在我机子上运行...

bluehawksky
2018/05/23
0
0
将vagrant的centos镜像扩容到800G

vagrant默认的centos7.2box的容量只有8G... 8G?! 能做得了什么?这点容量撑不了几周就爆满。也许官方是出于轻便化的考量,但作为要在vagrant上搭建各种开发环境的开发人员,8G的容量只能让v...

章鱼喵_
2018/08/03
0
0
创建虚拟化开发环境工具--Vagrant

Vagrant 是一个基于 Ruby 的工具,用于创建和部署虚拟化开发环境。它使用 Oracle 的开源 VirtualBox 虚拟化系统,使用 Chef 创建自动化虚拟环境。 功能特性: 支持快速新建虚拟机 支持快速设...

匿名
2010/03/10
24.4K
5
使用 Vagrant 打造跨平台开发环境

Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史。 我们可以通过 Vagrant 封装一个 ...

贪睡猫仙mosen
2014/06/16
444
0
window上vagrant打造虚拟化平台

1.1准备工作: 下载安装 VirtualBox :https://www.virtualbox.org/ 下载安装 Vagrant : http://www.vagrantup.com/ 下载安装git bash : https://git-scm.com/download/ 下载需要使用的 bo......

bdstravel
2016/03/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

超过了最大请求长度。

尝试在网站上上传视频时,出现错误“ 最大请求长度超出” 。 我该如何解决? #1楼 我认为这里没有提到它,但是要使其正常工作,我必须在web.config中提供以下两个值: 在system.web <httpRun...

javail
7分钟前
3
0
宝塔好用吗?

不少新手站长对服务器运维知识不擅长,不知道怎样管理好云服务器。如果有一个简单易用的面板,站长们就不需要去学习运维技巧,把这些就交给后端工程师就好。 宝塔算是目前市面上使用用户较多...

BirdCloud
13分钟前
3
0
第二代网关GateWay搭建流程

Spring Cloud第二代网关GateWay是由纯Netty开发,底层为Reactor,WebFlux构建,不依赖任何Servlet容器,它不同于Zuul,使用的是异步IO,性能较Zuul提升1.6倍。搭建过程如下(本次搭建的为子项目...

算法之名
16分钟前
10
0
Drools规则引擎详解-常用的drl实例

package droolsDemo//说明:每个 drl 都必须声明一个包名,这个包名与 Java 里面的不同,它不需要与文件夹的层次结构一致,//主要用于可以根据kmodule.xml中不同的package属性来指定加载...

蜗牛伊
18分钟前
4
0
如何在Android Studio中“选择Android SDK”?

将Eclipse-Android-Project成功导入“ Android Studio 1.4”后,出现错误 “请选择Android SDK” 当我单击该按钮以在模拟器中运行该应用程序时,但找不到任何方法。 当我单击“运行”时,此对...

技术盛宴
22分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部