vagrant & VirtualBox

vagrant introduction

Posted by zwtisme on April 26, 2020

使用vagrant + VirtualBox搭建虚拟开发环境

1. 安装VirtualBox

在[https://www.virtualbox.org/wiki/Downloads]下载最新版的Virtualbox,安装完成。

2. 安装Vagrant

在[https://www.vagrantup.com/downloads.html]下载最新版的Vagrant,安装完成。在windows下安装vagrant,为了写入相应配置到环境变量,系统可能会要求重新启动。在命令行中,输入vagrant,查看程序是不是已经运行了。如果不行,请检查一下$PATH里面是否包含vagrant所在的路径。

3. Vagrant命令详解

命令 作用
vagrant box add 添加box的操作
vagrant init 初始化box的操作,会生成vagrant的配置文件Vagrantfile
vagrant up 启动本地环境
vagrant ssh 通过ssh登录本地环境所在虚拟机
vagrant halt 关闭本地环境
vagrant suspend 暂停本地环境
vagrant resume 恢复本地环境
vagrant reload 修改了Vagrantfile后,使之生效(相当于先 halt,再 up)
vagrant destroy 彻底移除本地环境
vagrant box list 显示当前已经添加的box列表
vagrant box remove 删除相应的box
vagrant package 打包命令,可以把当前的运行的虚拟机环境进行打包
vagrant plugin 用于安装卸载插件
vagrant status 获取当前虚拟机的状态
vagrant global-status 显示当前用户Vagrant的所有环境状态

4. 使用Vagrant安装配置虚拟机

4.1 box是什么?

接下来,我们需要选择使用何种操作系统,这里以CentOS release 6.9(公司给的-也可以自己下载)为例。以前基于虚拟机的工作流,我们需要下载ISO镜像,安装系统,设置系统等操作。而Vagrant开源社区提供了许多已经打包好的操作系统,我们称之为box。也可以从box下载地址,找到想要的box,也可以自己制作一个。

  • 官方镜像:https://vagrantcloud.com/boxes/search
  • 第三方仓库:http://www.vagrantbox.es/

4.2 如何安装一个box?

mkdir -p /e/zwtsource
cd /e/zwtsouce
vagrant box add {title} {url}
vagrant init {title}
vagrant up 其中{title}是以后创建虚拟机的别名,url是box的路径,如【vagrant box add dev1 ./centos6.9.box】 vagrant init {title} 中 {title}最好省去,直接vagrant init即可,尤其想装多个虚拟机的时候,直接如下执行多次 - [ ] vagrant box add dev1 ./centos6.9.box - [ ] vagrant box add dev2 ./centos6.9.box - [ ] vagrant box add dev3 ./centos6.9.box - [ ] ...

当然除此之外还有支持其他方式添加box镜像,如下:

  • 使用http绝对地址:

    vagrant box add dev1 http://files.vagrantup.com/precise64.box

  • 使用本地文件(从协议来说,和上面一样,相当于file:///协议的地址)

    vagrant box add dev1 ./precise64.box

  • 使用仓库名称

    vagrant box add dev1 ubuntu/precise64

4.3 安装box

cd /e/zwtsource
vagrant box add dev1 ./centos.box
vagrant box add dev2 ./centos.box
vagrant init
vim Vagrantfile //vagrant init后会生成此文件
vagrant up

4.4 Vagrantfile文件修改

//加上如下配置后,可以192.168.255.131和192.168.255.132访问虚拟机
config.ssh.username = "vagrant"
config.ssh.password = "vagrant"
config.vm.define "dev1" do |dev1|
	dev1.vm.box = "dev1"
	dev1.vm.network "forwarded_port", guest: 22, host: 12222
	dev1.vm.network "forwarded_port", guest: 80, host: 10080
	dev1.vm.network "forwarded_port", guest: 81, host: 10081
	dev1.vm.network "forwarded_port", guest: 3306, host: 13306
	dev1.vm.network "private_network", ip: "192.168.255.131"
end

config.vm.define "dev2" do |dev2|
dev2.vm.box = "dev2"
	dev2.vm.network "forwarded_port", guest: 22, host: 22222
	dev2.vm.network "forwarded_port", guest: 80, host: 20080
	dev2.vm.network "forwarded_port", guest: 81, host: 20081
	dev2.vm.network "forwarded_port", guest: 3306, host: 23306
	dev2.vm.network "private_network", ip: "192.168.255.132"
end

​ ​

5. 网络资源

  • https://blog.csdn.net/bluehawksky/article/details/80417845
  • https://www.jianshu.com/p/8d22b5c51984