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