virtualbox是相似vmware workstation的虚拟机软件,并且是开源的,支持多平台,在win10上也能顺畅运行。win10上安装vagrant能在终端xshell上像linux同样命令行操做,也便于开发环境的切换,很不错。
vagrant怎么用?
1,下载安装
vagrant下载:https://www.vagrantup.com/downloads.html
virtualbox下载:https://www.virtualbox.org/wiki/Downloadshtml
2,vagrant相似docker,固然你也能够像vmare workstation同样用它
vagrant操做box来启动虚拟机,box相似docker的image。
box官方下载地址http://www.vagrantbox.es,固然可能没有你喜欢的版本或你不信任这些box,能够本身制做。linux
3,制做本身的box(此例基于virtualbox,方便;vmware也行,稍微麻烦一些)
首先,在virtualbox上安装虚拟机,好比到debian官网下载镜像,而后挂载镜像安装便可。
可作一些简单的调优,去掉usb/音频设备,开发中不多用到;安装步骤就很少说了,中间按提示操做便可。git
随后,以root帐号进入系统(这里是debian9.5)
(1)替换阿里源
cd /etc/apt/
cp source.list source.list.bk
vi source.list
deb http://mirrors.aliyun.com/debian stretch main contrib non-free
deb-src http://mirrors.aliyun.com/debian stretch main contrib non-free
deb http://mirrors.aliyun.com/debian stretch-updates main contrib non-free
deb-src http://mirrors.aliyun.com/debian stretch-updates main contrib non-free
deb http://mirrors.aliyun.com/debian stretch-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian stretch-backports main non-free contrib
deb http://mirrors.aliyun.com/debian-security stretch/updates main contrib non-free
deb-src http://mirrors.aliyun.com/debian-security stretch/updates main contrib non-free
(2)更新系统并安装一些用到的工具
apt-get update -y
apt upgrade -y
apt install -y vim net-tools wget git sudo
(3)为制做vagrant box作准备
建立vagrant用户
adduser vagrant
添加vagrant用户的公共密钥
mkdir -m 0700 -p /home/vagrant/.ssh
wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -O /home/vagrant/.ssh/authorized_keys
chmod 600 /home/vagrant/.ssh/authorized_keys
chown -R vagrant:vagrant /home/vagrant/.ssh
设置sudoers
echo "vagrant ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
(4)安装VBoxGuestAdditions,这个相似vmware workstation的vmtools
下载:http://download.virtualbox.org/virtualbox/5.2.18/VBoxGuestAdditions_5.2.18.iso
挂载到虚拟机光驱
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
apt-get install -y linux-headers-$(uname -r) build-essential
./VBoxLinuxAdditions.run
装完后重启一下(其实也不用,是重启很快)
apt clean 清理缓存包
随后关机github
若是不装VBoxGuestAdditions,回头vagrant up启动时会报错:
Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:docker
mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant
The error output from the command was:
mount: unknown filesystem type 'vboxsf'shell
4,开始制做vagrant box
进入虚拟机文件目录,这里是C:\Users\l\VirtualBox VMs\centos7.5
命令格式:
vagrant package --base <VBoxName> --output <saveFileName>
xhsell里
cd C:\Users\l\VirtualBox VMs\centos7.5
vagrant package --base debian9.5 --output debian9.5.box
不一下子就生成了box文件,本身作的有点大,700M,将其移到D:\debianbox目录
(最小化box,可卸载一些暂时不用的包apt-get remove -y linux-headers-$(uname -r) build-essential,碎片整理磁盘dd if=/dev/zero of=/EMPTY bs=1M,rm -rf /EMPTY)box小便于快速启动哦vim
5,vagrant来操做box
xshell里
cd D:\debianbox
添加box
vagrant box add debian9 debian9.5.box
查看box列表
vagrant box list
初始化虚拟机,在目录下会生成Vagrantfile
vagrant init debian9
启动虚拟机
vagrant up
查看当前状态
vagrant statuscentos
vagrant经常使用命令:
vagrant box add 添加box
vagrant init 初始化box
vagrant up 启动本地环境
vagrant ssh 经过ssh登陆本地环境所在虚拟机(xshell显示不出来,??)
vagrant halt 关闭本地环境
vagrant suspend 暂停本地环境,虚拟机内存等信息将以状态文件的方式保存在本地,能够执行恢复操做后继续使用
vagrant resume 恢复本地环境,与前面的暂停相对应
vagrant reload 修改了Vagrantfile后,使之生效,从新加载
vagrant destroy 完全移除本地环境,删除后在当前虚拟机所作进行的除开Vagrantfile中的配置都不会保留
vagrant box list 显示当前已经添加的box列表
vagrant box remove 删除相应的box
vagrant package 打包命令,能够把当前的运行的虚拟机环境进行打包
vagrant plugin 用于安装卸载插件
vagrant status 获取当前虚拟机的状态
vagrant global-status 显示当前用户Vagrant的全部环境状态缓存
6,用xshell链接虚拟机(这里要在virtualbox界面配置该虚拟机的网络---高级---端口转发)
Windows 终端并不支持SSH,因此须要安装第三方SSH客户端, 好比:Xshell,Putty,Cmder, 这里是Xshell
在Xshell里面新建链接,而后输入IP:127.0.0.1,端口号:2222,都是默认的网络
选择Public Key登陆, 在用户密钥处 点击浏览 , 选择刚刚配置虚拟机目录下的子目录 \.vagrant\machines\default\virtualbox\private_key , 而后确认登录便可
若是想使用帐户密码登陆 , 能够进入虚拟系统后 , 修改 /etc/ssh/sshd_config , 设置 PasswordAuthentication yes