跳转至

Vagrant 开发环境

一句话概述:Vagrant 是 HashiCorp 出品的开发环境管理工具,用一个 Vagrantfile 就能自动创建完全一致的虚拟机开发环境,告别"在我电脑上能跑"。

核心知识点

概念白话解释
Box盒子 = 预打包的虚拟机镜像模板
Vagrantfile配置文件 = 描述虚拟机怎么配置的 Ruby 脚本
Provider提供者 = 底层虚拟化工具(VirtualBox、VMware、Docker)
Provisioner供应器 = 虚拟机启动后自动运行的配置脚本
Synced Folder同步文件夹 = 主机和虚拟机共享的目录

安装配置

# macOS
brew install vagrant  # 安装 Vagrant
brew install --cask virtualbox  # 安装 VirtualBox(默认 Provider)

# Ubuntu
sudo apt install virtualbox  # 安装 VirtualBox
wget https://releases.hashicorp.com/vagrant/2.4.3/vagrant_2.4.3-1_amd64.deb  # 下载
sudo dpkg -i vagrant_2.4.3-1_amd64.deb  # 安装

# 验证
vagrant version  # 查看版本

基本使用

1. 快速启动

mkdir my-project && cd my-project  # 创建项目目录
vagrant init ubuntu/jammy64  # 生成 Vagrantfile(Ubuntu 22.04)
vagrant up  # 启动虚拟机(首次会下载 Box)
vagrant ssh  # SSH 进入虚拟机
vagrant halt  # 关机
vagrant destroy  # 销毁虚拟机

2. 自定义 Vagrantfile

# Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/jammy64"  # 基础镜像

  # 网络配置
  config.vm.network "forwarded_port", guest: 8080, host: 8080  # 端口转发
  config.vm.network "private_network", ip: "192.168.56.10"  # 私有网络

  # 同步文件夹(主机 ./data 映射到虚拟机 /home/vagrant/data)
  config.vm.synced_folder "./data", "/home/vagrant/data"

  # 虚拟机资源配置
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "4096"  # 4GB 内存
    vb.cpus = 2  # 2 个 CPU
    vb.name = "bioinfo-dev"  # 虚拟机名称
  end

  # 自动安装软件
  config.vm.provision "shell", inline: <<-SHELL
    apt-get update  # 更新包列表
    apt-get install -y python3 python3-pip  # 安装 Python
    pip3 install biopython pandas  # 安装生信包
  SHELL
end

3. 多机环境

Vagrant.configure("2") do |config|
  config.vm.define "web" do |web|  # Web 服务器
    web.vm.box = "ubuntu/jammy64"
    web.vm.network "private_network", ip: "192.168.56.10"
  end

  config.vm.define "db" do |db|  # 数据库服务器
    db.vm.box = "ubuntu/jammy64"
    db.vm.network "private_network", ip: "192.168.56.11"
    db.vm.provision "shell", inline: "apt-get install -y postgresql"
  end
end

常见报错

报错信息原因解决方法
VBoxManage not foundVirtualBox 未安装安装 VirtualBox
The box could not be foundBox 名称错误在 app.vagrantup.com 搜索正确名称
Port 8080 is already in use端口冲突换一个端口或关闭占用进程
Mount failed共享文件夹挂载失败vagrant plugin install vagrant-vbguest

速查表

vagrant init <box>      # 初始化
vagrant up              # 启动虚拟机
vagrant ssh             # SSH 进入
vagrant halt            # 关机
vagrant reload          # 重启(重新加载 Vagrantfile)
vagrant provision       # 重新执行供应脚本
vagrant destroy         # 销毁虚拟机
vagrant status          # 查看状态
vagrant box list        # 列出已下载的 Box
vagrant box add <box>   # 下载 Box
vagrant snapshot save <name>   # 保存快照
vagrant snapshot restore <name> # 恢复快照

参考:Vagrant 文档 | 更新于 2026 年