什么是Vagrant
Vagrant是一个与虚拟机一起工作的工具。
它围绕一个名为 VagrantFile 的配置文件而工作,这个配置文件告诉 Vagrant 你想要安装的操作系统,以及一些其他选项,如 IP 和目录同步。 你还可以在虚拟机上添加一个命令的配置脚本。
通过共享这个 VagrantFile,项目的所有开发人员全可以使用完全相同的虚拟机。
安装:
1.BIOS 开启CPU虚拟化支持
2.PowerShell版本>=3.0
3.安装virtualBox,vagrant
4.与虚拟机共享文件夹,则需要安装以下插件。
vagrant plugin install vagrant-vbguest
使用:
Box管理命令
查看本地box列表
vagrant box list
添加box到列表
vagrant box add
从box列表移除
vagrant box remove
添加box镜像的方式:
boxurl:
'https://app.vagrantup.com/centos/boxes/7/versions/1804.02'+'/providers/'+'供应商名字/'+'.box'
https://app.vagrantup.com/ubuntu/boxes/trusty64/versions/20190410.0.0/providers/virtualbox.box
https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box
本地添加时,如果出现下面报错,请指定-name参数,给本地box起个名字。
==> box: Box file was not detected as metadata. Adding it directly...
A name is required when adding a box file directly. Please pass
the `--name` parameter to `vagrant box add`. See
`vagrant box add -h` for more help.
1.联网,直接下载添加:
vagrant box add centos/7
和GitHub类似,远程仓库box名为[用户名/镜像名]形式,如centos/7,laravel/homestead
2.本地添加:(本地box文件的路径一定放最后):
vagrant box add -name mycentos-7 D:\Vagrant\mybox\CentOS-7-x86_64-Vagrant-1902_01.VirtualBox.box
或
vagrant box add centos-7.box
以上本地方式添加的box版本号是0。通常情况影响不大。但使用Laravel Homestead时,会有版本等限制。
配置文件添加:(指定要添加的box的详细信息)
例1:
vim homestead.json
{
"name": "laravel/homestead",
"versions": [{
"version": "6.3.0",
"providers": [{
"name": "virtualbox",
"url": "D:/Users/youname/Downloads/homestead-6.3.0.box"
}]
}]
}
vagrant box add homestead.json
例2:
vim metadata.json
{"name": "laravel/homestead", # 添加后的box名称
"versions": [{
"version": "2.1.0", # 版本号
"providers": [{
"name": "virtualbox",
"url": "file://E:/xunlei/Laravel-Homestead.box" # 下载到本地的box
}]
}]}
vagrant box add metadata.json
Vagrantfile
config.vm.box = "centos/8"
config.vm.box_url = "http://cloud.centos.org/centos/8/x86_64/images/CentOS-8-Vagrant-8.1.1911-20200113.3.x86_64.vagrant-virtualbox.box"
虚拟机操作命令:
vagrant halt | up | status | reload | ssh | destroy
1.当前目录下,初始化一个虚拟机实例(生成Vagrantfile文件,config.vm.box='boxName')
vagrant init [boxName]
boxName :Vagrantfile文件中的config.vm.box配置项。本地vagrant box list中的Box镜像名。
默认值为base。需修改成实际存在的box镜像名,方可运行vagrnat up命令。
如boxName不在本地box列表中,等启动vagrnat up命令后,将自动联网下载关联的box镜像。
2.根据当前目录的Vagrantfile配置文件启动虚拟机
vagrant up
3.如更改Vagrantfile配置文件后,需重载虚拟机才能生效:
vagrant reload
4.结束所有操作后,请记得关闭虚拟机:
vagrant halt
5.虚拟机不再使用时,可直接销毁。释放磁盘空间。
该命令会直接删除.vagrant/machines/default/virtualbox目录下的所有文件
vagrant destroy
6.当需开启另一台虚拟机时,为避免冲突,可将当前虚拟机挂起,进入休眠状态。
vagrant suspend
更多虚拟机操作管理命令:
$ vagrant ssh # SSH 至虚拟机
$ vagrant resume # 唤醒虚拟机
$ vagrant status # 查看虚拟机运行状态
vagrant 添加带版本号的 box https://segmentfault.com/a/1190000016657185
如何安装并设置Vagrant https://linux.cn/article-9301-1.htmlVagrant仓库: https://app.vagrantup.com/boxes/search