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.zipinflating: LICENSE.txt inflating: vagrant
解压缩出来的vagrant就是可执行文件,把它放入可执行路径,比如~/tools目录
export PATH=~/tools/:$PATH
另外Ubuntu的apt支持vagrant,所以直接apt安装更方便:
唐突了,没有....
不过有这个api
ruby-vagrant-cloud/noble,noble 3.0.5-1 allVagrant Cloud API Library
使用
以下是 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
sudo apt install virtualbox virtualbox-ext-pack
初始化虚拟机设置
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的系统,简洁小巧,后面应该有很大的使用价值!