使用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