vagrant是一个命令行管理虚拟机的工具
镜像下载
快速开始
0、安装vagrant和virtualBox
1、添加box到vagrant
将下载的box添加到vagrant中
vagrant box add {本地下载的box} --name {重新命名的box名称}
vagrant box add ~/Downloads/CentOS-8-Vagrant-8.1.1911-20200113.3.x86_64.vagrant-virtual
box.box --name centos-8
vagrant box list
2、初始化虚拟机
创建一个虚拟机目录,这个目录将作为虚拟机根目录,许多配置项都是相对于此目录的。同时在这个目录中将会生成一个Vagrantfile,这个Vagrantfile可以在项目组中共享,让每个开发者拥有同一套开发环境
进入这个目录(这个目录未来会默认作为共享文件夹,但是默认的rsync这种共享模式存在缺陷)
- 同步是一次性的,即只有启动虚机的时候执行,也就是说改了代码必须要重启一次虚机
- 单向的,即只能从宿主机同步到虚拟机,也就是说在虚机内的改动不会同步到外面
- 需要拷贝文件,如果要同步的文件数量较多,会占用更多的磁盘空间
然后执行虚拟机初始化命令
vagrant init {box name}
会寻找对应的box并初始化,会优先寻找本地box目录下面的
vagrant init centos-8
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
3、启动虚拟机
vagrant up
还可以指定虚拟服务提供方
vagrant up --provider=virtualbox
查看虚拟机状态
vagrant status
4、访问虚拟机
vagrant ssh 连接到虚拟机
vagrant suspend 暂定
vagrant resume 恢复
vagrant halt 停止
vagrant reload 重启
vagrant destroy——删除虚拟机,但不会删除对应的box,因为多个项目会复用box。如果想删除box,可以使用以下命令
vagrant box remove {box name}
5、安装虚拟机增强
VirtualBox 的下载页面并没有直接给出 Guest Addtion 的下载链接,我们先在 VirtualBox 的任一下载链接上右键,复制链接地址,例如得到 https://download.virtualbox.org/virtualbox/6.1.6/VirtualBox-6.1.6-137129-Win.exe,去掉最后的文件名,把其中的路径 https://download.virtualbox.org/virtualbox/6.1.6/ 在浏览器中打开,就能看到所有可下载的版本,在其中找到 VBoxGuestAdditions_6.1.6.iso 直接下载。
6、镜像打包
执行镜像打包之前最好把虚拟机相关缓存清空,减少打出来包的大小
打出来的包就在当前虚拟机工作目录下
swapoff -a
rm -rf /swapfile
yum clean all
vagrant package
打包之后,然后执行
vagrant box add {刚打好的包路径} --name dxx/centos8-base
下次创建虚拟机时使用下面的命令就可以使用本次打的package了
vagrant init dxx/centos8-base
7、使用ssh客户端连接虚拟机
vagrant创建的虚拟机默认只能通过private_key连接虚拟机,
vagrant ssh-config 查看ssh配置
以SecureCRT为例,可以配置登陆方式为identity方式,并指定上述命令看到的秘钥路径(IdentityFile路径)即可通过SecureCRT登陆了。
Vagrantfile
配置端口转发,可以在宿主机上直接访问虚拟机的服务
但是当有多台虚拟机时容易引起端口冲突
config.vm.network "forwarded_port", guest: 22, host: 2222, id: "ssh", disabled: "true"
config.vm.network "forwarded_port", guest: 22, host: 22222
配置私有网络
config.vm.network "private_network", ip: "192.168.10.10"
也可以直接使用DHCP,但是并不推荐
config.vm.network "private_network", type: "dhcp"
配置桥接网络
一般情况下用不上这种模式
config.vm.network "public_network"
共享文件
共享文件能够简化开发流程,本地开发,然后在虚拟机上运行服务。共享文件相当于在主机和虚拟机之间建立了双向同步,本地的变更可以直接体现在虚拟机上。当虚拟机被销毁时,宿主机上的共享文件仍然会完好无损。
更新Vagrantfile之后,可以运行以下命令使得配置脚本生效
vagrant reload --provision
如下将本地文件夹./terramino-go与虚拟机文件夹做共享
config.vm.synced_folder "./terramino-go", "/home/vagrant/terramino-go", create: true
指定共享模式
config.vm.synced_folder "../data", "/vagrant_data", type: "rsync"
《个人介绍》
大家还可以在以下平台关注我,查看更多作者的历史文章
1)欢迎关注