补充说明
vagrant 是 HashiCorp 开发的开源命令行工具,用于创建、配置和销毁开发用虚拟机环境。它通过一个名为 Vagrantfile 的文本文件声明环境需求(基础镜像 box、网络、同步目录、初始化脚本),一条 vagrant up 即可拉起完整环境,实现“基础设施即代码(IaC)”的开发工作流。
Vagrant 本身不是虚拟机软件,而是封装器:后端(provider)可以是 VirtualBox、VMware、libvirt/KVM、Hyper-V 等,前端通过 vagrant ssh 进入机器,通过 vagrant destroy 销毁。Vagrant 经常与配置管理工具(如 Ansible、Shell 脚本)配合,在启动时自动配置环境。它是本地开发、演示和跨平台复现(例如用接近生产环境的 Linux 跑同一套脚本)的常见选择。
常用的关键概念:box 是可复用的基础镜像(类似 Docker 镜像);Vagrantfile 中的 config.vm.provider 可针对不同 provider 做差异化设置。首次 vagrant up 会下载 box,之后启动很快;同步目录默认把项目目录映射到虚拟机 /vagrant。
语法
vagrant [子命令] [选项]
vagrant <init|up|ssh|destroy|halt|status|reload|provision> [name|--name]
选项
vagrant init [box-name] # 在目录中生成一个 Vagrantfile
vagrant up [name] # 启动(并创建)虚拟机,必要时下载 box
vagrant ssh [name] # SSH 登录虚拟机
vagrant halt [name] # 关闭虚拟机(不销毁)
vagrant reload [name] # 重启虚拟机并重新应用配置
vagrant provision [name] # 重新执行 provision 配置脚本
vagrant status # 查看当前虚拟机状态
vagrant destroy [name] # 销毁虚拟机(--force 不询问)
vagrant box list # 列出已下载的 box
实例
# 初始化一个使用 ubuntu/jammy64 box 的环境
vagrant init ubuntu/jammy64
# 启动虚拟机(首次会自动下载 box)
vagrant up
# SSH 登录虚拟机
vagrant ssh
# 查看状态
vagrant status
# 暂停、恢复与销毁
vagrant halt
vagrant up
vagrant destroy -f
最小 Vagrantfile 示例:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/jammy64"
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.provision "shell", inline: "apt-get update -y"
end