Vagrant虚拟机方案:docker的开源跨平台替代Vagrant
在看docker的替代品,有人说ServBay不错,但是它是只支持Mac和Windows,不开源,而且很多功能需要会员。。。。
看到另一个替代品是Vagrant
官网:Install | Vagrant | HashiCorp Developer
Vagrant的特点是开源、跨平台!
官方介绍
为什么使用Vagrant?
Vagrant基于行业标准技术构建,提供易于配置、可复现且可移植的工作环境,并由单一一致的工作流程控制,有助于最大限度地提高您和您团队的生产力和灵活性。
为了实现其神奇功能,Vagrant站在了巨人的肩膀上。机器是在VirtualBox、VMware、AWS或任何其他提供商提供的平台上配置的。然后,行业标准的配置工具,如shell脚本、Chef或Puppet,可以在虚拟机上自动安装和配置软件。
对于开发者
如果你是一名开发者,Vagrant会将依赖及其配置隔离在一个可随意使用且一致的环境中,同时不会牺牲你习惯使用的任何工具(编辑器、浏览器、调试器等)。一旦你或其他人创建了一个Vagrantfile,你只需运行vagrant up,所有内容都会自动安装并配置好,供你使用。团队中的其他成员也会使用相同的配置来创建他们的开发环境,因此无论你是在Linux、Mac OS X还是Windows上工作,团队成员都在相同的环境中运行代码,依赖相同,配置方式也相同。再也不用担心“在我的机器上能运行”的bug了。
对于操作员
如果你是一名运维工程师或DevOps工程师,Vagrant为你提供了一个可随意使用的环境以及一致的工作流程,用于开发和测试基础设施管理脚本。你可以使用本地虚拟化工具(如VirtualBox或VMware)快速测试shell脚本、Chef cookbooks、Puppet模块等。然后,使用相同的配置,你可以在AWS或RackSpace等远程云平台上,通过相同的工作流程测试这些脚本。抛弃你的自定义脚本,回收EC2实例,不再需要频繁切换到各种机器的SSH提示符,开始使用Vagrant让你的生活更加有条理。
对于设计师
如果你是一名设计师,Vagrant会自动为该Web应用设置好所需的一切,让你专注于自己最擅长的设计工作。一旦开发人员配置好Vagrant,你就无需再担心如何让应用运行起来。再也不用麻烦其他开发人员帮你修复环境,以便测试设计。只需检出代码,运行vagrant up,然后就可以开始设计了。
给每个人
Vagrant专为每个人设计,是创建虚拟化环境最简单、最快捷的方式!
安装
在Mac下安装
使用brew安装
brew tap hashicorp/tap
brew install hashicorp/tap/hashicorp-vagrant
也可以使用二进制安装,从这里下载:Install | Vagrant | HashiCorp Developer
Linux下安装
也是可以直接下载二进制文件,从上面官网链接下载即可。下载后unzip解压缩
unzip vagrant_2.4.8_linux_amd64.zip
Archive: vagrant_2.4.8_linux_amd64.zip
inflating: LICENSE.txt
inflating: vagrant
解压缩出来的vagrant就是可执行文件,把它放入可执行路径,比如~/tools目录
export PATH=~/tools/:$PATH
另外Ubuntu的apt支持vagrant,所以直接apt安装更方便:
唐突了,没有....
不过有这个api
ruby-vagrant-cloud/noble,noble 3.0.5-1 all
Vagrant Cloud API Library
又唐突了,其实是可以apt安装的,需要这样:
wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install vagrant
在FreeBSD下安装
FreeBSD下有vagrant的软件包,直接pkg install 安装即可
sudo pkg install vagrant
安装的软件不少
Number of packages to be installed: 88
The process will require 141 MiB more space.
30 MiB to be downloaded.
在Windows10下安装
首先从官网下载安装包:Install | Vagrant | HashiCorp Developer
安装完成后,需要重启机器....这是跟Mac、Linux以及FreeBSD不一样的地方,

使用
以下是 Vagrant 的完整使用指南,涵盖核心操作与进阶技巧:
🔧 一、环境安装
-
安装 VirtualBox
官网下载对应系统版本安装:VirtualBox 官网12# Ubuntu 示例 sudo apt install virtualbox virtualbox-ext-pack -
安装 Vagrant
官网下载安装包:Vagrant 官网12# Ubuntu 示例 wget https://releases.hashicorp.com/vagrant/2.3.7/vagrant_2.3.7-1_amd64.deb sudo apt install ./vagrant_2.3.7-1_amd64.deb -
配置存储路径(避免占用C盘)
- Windows:设置环境变量
VAGRANT_HOME指向大容量磁盘(如E:\VirtualBox.vagrant.d)15 - VirtualBox:通过菜单
管理 → 全局设定修改默认虚拟机位置15
- Windows:设置环境变量
感觉Linux下不用去管。
🚀 二、基础操作流程
-
初始化虚拟机配置
mkdir ~/vm-centos7 && cd ~/vm-centos7 # 创建项目目录 vagrant init centos/7 # 生成 Vagrantfile 配置文件:ml-citation{ref="3,7" data="citationList"} -
启动并登录虚拟机
vagrant up # 启动虚拟机(首次自动下载镜像) vagrant ssh # SSH 登录虚拟机(默认用户 vagrant):ml-citation{ref="7,12" data="citationList"} -
常用命令速查
命令 功能 vagrant halt正常关闭虚拟机 vagrant reload重启并重载配置 vagrant destroy销毁虚拟机(删除所有文件) vagrant status查看虚拟机状态
️ 三、Vagrantfile 进阶配置
编辑 Vagrantfile 实现自定义环境:
Vagrant.configure("2") do |config|
config.vm.box = "centos/7" # 指定基础镜像
# 端口转发(本地访问 1234 映射到虚拟机 80 端口)
config.vm.network "forwarded_port", guest: 80, host: 1234:ml-citation{ref="1,7" data="citationList"}
# 私有网络(固定 IP)
config.vm.network "private_network", ip: "192.168.33.11":ml-citation{ref="1,8" data="citationList"}
# 资源分配(CPU 和内存)
config.vm.provider "virtualbox" do |vb|
vb.memory = 4096 # 分配 4GB 内存
vb.cpus = 2 # 分配 2 核 CPU:ml-citation{ref="8" data="citationList"}
end
end
四、镜像(Box)管理
-
查找与添加镜像
vagrant box add ubuntu/focal64 # 从官方仓库下载镜像:ml-citation{ref="12" data="citationList"} vagrant box add CentOS7 file:///path/to/box # 添加本地镜像:ml-citation{ref="12" data="citationList"} -
列出与删除镜像
vagrant box list # 查看本地镜像列表 vagrant box remove NAME # 删除指定镜像:ml-citation{ref="12,13" data="citationList"}
🔗 五、开发环境集成
- 团队协作:将配置好的
Vagrantfile共享给团队,确保环境一致46。 - PyCharm 集成:在 IDE 中配置 Vagrant 解释器,实现本地编码、虚拟机运行14。
- 集群部署:通过循环定义多台虚拟机(如 Hadoop 集群)8:
(1..3).each do |i| config.vm.define "node#{i}" do |node| node.vm.hostname = "node#{i}" node.vm.network "private_network", ip: "192.168.56.#{10+i}" end end
⚠️ 注意事项
- 镜像兼容性:优先使用官方仓库(Vagrant Cloud)的镜像7。
- 网络配置冲突:避免
private_network的 IP 段与主机网络重叠8。 - 资源开销:虚拟机默认占用磁盘空间较大,建议配置到非系统盘15。
通过 Vagrant 可快速构建隔离的开发环境,大幅减少“本地能跑,服务器报错”的问题410。
实践
快速安装VirtualBox
Ubuntu下安装
sudo apt install virtualbox virtualbox-ext-pack
Mac下安装:
brew search vagrant
初始化虚拟机设置
mkdir ~/vm-centos7 && cd ~/vm-centos7 # 创建项目目录 vagrant init centos/7 # 生成 Vagrantfile 配置文件:ml-citation{ref="3,7" data="citationList"}输出:
`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.
这里只是初始化,其实配置文件是否正确,需要等后面up的时候下载镜像才知道。从这里搜索镜像:HashiCorp Cloud Platform
比如搜索freebsd-14.3 ,可以看到
| Box name | Latest Version | Downloads | Latest Release | Providers | Architectures |
|---|---|---|---|---|---|
| bento/freebsd-14.3 | 202508.03.0 | 1 | 4天前 |
parallels virtualbox libvirt qemu vmware_desktop |
arm64 amd64 |
FreeBSD的磁盘文件大小是 652M,还有:generic/freebsd14 493M。
而Ubuntu的就相对大很多,比如generic/ubuntu2204 HashiCorp Cloud Platform大小是1.97G
启动并登陆虚拟机
vagrant up # 启动虚拟机(首次自动下载镜像)
vagrant ssh # SSH 登录虚拟机(默认用户 vagrant):ml-citation{ref="7,12" data="citationList"}
下载速度还行,有时候3MB/s,大约是凌晨到早晨速度快一点。
以下是启动FreeBSD系统:

从拉取到启动系统,只需要几分钟,且因为使用了VirtualBox的虚拟镜像,几乎不用动手做任何事情,非常简单方便!
FreeBSD系统里还是内存占用少啊
last pid: 933; load averages: 0.32, 0.26, 0.13; b up 0+00:07:43 01:05:29
23 processes: 1 running, 22 sleeping
CPU 0: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 1: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
Mem: 15M Active, 2704K Inact, 225M Wired, 143M Buf, 1719M Free
Swap: 4096M Total, 4096M Free
总结
非常不错,尤其是使用Vagrant来启动FreeBSD的系统,简洁小巧,后面应该有很大的使用价值!
调试
FreeBSD下安装vagrant后执行报错Could not find 'rubyzip'
vagrant
/usr/local/lib/ruby/site_ruby/3.3/rubygems/specification.rb:1421:in `block in activate_dependencies': Could not find 'rubyzip' (~> 2.3.2) among 70 total gem(s) (Gem::MissingSpecError)
Checked in 'GEM_PATH=/home/vagrant/.local/share/gem/ruby/3.3:/usr/local/lib/ruby/gems/3.3' at: /usr/local/lib/ruby/gems/3.3/specifications/vagrant-2.4.1.gemspec, execute `gem env` for more information
使用pkg 安装rubyzip后,还是报错
sudo pkg install rubygem-rubyzip
使用gem安装rubyzip
gem install rubyzip
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)