个人理解:Vagrant 是对 Virtualbox 操作的封装,可以快速批量操作多个虚拟机环境。
在实际开发过程中,可以与同事使用同一个镜像保证开发环境的统一性。
安装环境
Virtualbox:https://www.virtualbox.org/wiki/Downloads
- 下载虚拟机主程序 并 同时下载 对应版本的扩展包
- Vagrant:https://www.vagrantup.com/
Vagrant Boxe 下载
- Box 一般的使用同事打包好的镜像文件,也可以在网上下载别人打包好的镜像
- Vagrant 官方镜像仓库:https://app.vagrantup.com/boxes/search
- 清华大学镜像 Ubuntu:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/vagrant/
- 中科大镜像 CentOS:https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/
- 中科大镜像 Ubuntu:https://mirrors.ustc.edu.cn/ubuntu-cloud-images/vagrant/
安装步骤
- Virtualbox 虚拟机安装
- VirtualBox 扩展包
- Vagrant 安装
执行
vagrant version
检查是否安装成功:> vagrant version Installed Version: 2.2.18 Latest Version: 2.2.18
基本命令
Box 操作
命令 | 说明 |
---|---|
vagrant box list | 查看 box 列表 |
vagrant box add [box_path] --name [box_name] | 添加 box box_path:添加的box文件路径 box_name:box名称 |
vagrant box remove [box_name] | 移除 box |
虚拟机操作
命令 | 说明 |
---|---|
vagrant init [box_name] | 新建虚拟机 |
vagrant up | 启动虚拟机 |
vagrant halt | 停止虚拟机 |
vagrant suspend | 暂停虚拟机 |
vagrant resume | 恢复虚拟机 |
vagrant reload | 重载虚拟机,并重新加载配置 |
vagrant destroy | 删除虚拟机 |
vagrant package | 打包虚拟机 |
vagrant status | 查看状态 |
vagrant ssh | 使用 vagrent用户直接登录虚拟机中 在虚拟机中可以使用: sudo -i 切换为 root 账户CTRL + D 退出 ssh |
vagrant ssh-config | 查看ssh 配置信息,可以使用其他工具 ssh 链接虚拟机 默认不支持密码登录,IdentityFile 是 私钥文件路径 如果需要密码登录,则需要在虚拟机中自行设置 |
vagrant provision | 重新执行 vagrantfile 中 provision 部分的 shell 命令 |
vagrant version | 查看 Vagrant 版本 |
插件安装
# 在访客系统上自动安装主机的 VirtualBox Guest Additions
vagrant plugin install vagrant-vbguest
# 使用国内镜像源 安装插件
vagrant plugin install 插件名称 --plugin-clean-sources --plugin-source https://gems.ruby-china.com/
配置文件
每次修改完配置文件需要 重载虚拟机
设置 虚拟机内存 和 CPU
config.vm.provider :virtualbox do |vb|
# 设置虚拟机内存为 2048MB
vb.memory = 2048
# 设置虚拟机为 2核CPU
vb.cpus = 2
end
设置映射目录
映射目录需要在虚拟机系统中 安装 VBoxGuestAdditions:
- 在 Vbox 虚拟机中挂载
VBoxGuestAdditions.iso
镜像 - 切换到 root 用户:
sudo -i
- 查看虚拟光盘是否挂载:
lsblk
- 挂载光盘到系统目录:
mount /dev/sr0 /mnt/
- 更新并安装:
yum update -y && yum install -y gcc kernel-devel
- 重启虚拟机,后安装:
[root@localhost mnt]# ./VBoxLinuxAdditions.run
- 查看 "vboxguest" 是否被加载:
[root@localhost ~]# lsmod |grep vbox
- 加载成功后关闭服务器 配置
Vagrantfile
文件,保存后 启动虚拟机:vagrent up
# config.vm.synced_folder "[宿主机目录]", "虚拟机目录"
config.vm.synced_folder "./project", "/vagrant_data"
映射端口和 IP
# 将虚拟机 IP 映射到 192.168.33.10,宿主机可直接访问
config.vm.network "private_network", ip: "192.168.33.10"
# 端口映射 将虚拟机中的 80 端口映射到本机 8080 端口
config.vm.network "forwarded_port", guest: 80, host: 8080
# 默认端口转发只会使用 tcp,可以通过配置使用udp转发
config.vm.network "forwarded_port", guest: 80, host: 8080,protocol: "udp"
只是介绍简单的配置使用,详细配置方法参考文档:https://www.vagrantup.com/docs