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

使用

以下是 Vagrant 的完整使用指南,涵盖核心操作与进阶技巧:


🔧 ‌一、环境安装

  1. 安装 VirtualBox

    官网下载对应系统版本安装:VirtualBox 官网12

    复制代码
    # Ubuntu 示例 
    sudo apt install virtualbox virtualbox-ext-pack 
  2. 安装 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
  3. ‌**配置存储路径(避免占用C盘)**‌

    • Windows:设置环境变量 VAGRANT_HOME 指向大容量磁盘(如 E:\VirtualBox.vagrant.d)15
    • VirtualBox:通过菜单 管理 → 全局设定 修改默认虚拟机位置15

感觉Linux下不用去管。


🚀 ‌二、基础操作流程

  1. 初始化虚拟机配置

    复制代码
    bash 复制代码
    mkdir ~/vm-centos7 && cd ~/vm-centos7  # 创建项目目录
    vagrant init centos/7                  # 生成 Vagrantfile 配置文件:ml-citation{ref="3,7" data="citationList"}
  2. 启动并登录虚拟机

    复制代码
    bash 复制代码
    vagrant up     # 启动虚拟机(首次自动下载镜像)
    vagrant ssh    # SSH 登录虚拟机(默认用户 vagrant):ml-citation{ref="7,12" data="citationList"}
  3. 常用命令速查

    命令 功能
    vagrant halt 正常关闭虚拟机
    vagrant reload 重启并重载配置
    vagrant destroy 销毁虚拟机(删除所有文件)
    vagrant status 查看虚拟机状态

️ ‌三、Vagrantfile 进阶配置

编辑 Vagrantfile 实现自定义环境:

复制代码
bash 复制代码
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)管理

  1. 查找与添加镜像

    复制代码
    bash 复制代码
    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"}
  2. 列出与删除镜像

    复制代码
    bash 复制代码
    vagrant box list          # 查看本地镜像列表
    vagrant box remove NAME   # 删除指定镜像:ml-citation{ref="12,13" data="citationList"}

🔗 ‌五、开发环境集成

  • 团队协作 ‌:将配置好的 Vagrantfile 共享给团队,确保环境一致46。

  • PyCharm 集成‌:在 IDE 中配置 Vagrant 解释器,实现本地编码、虚拟机运行14。

  • 集群部署 ‌:通过循环定义多台虚拟机(如 Hadoop 集群)8:

    复制代码
    bash 复制代码
    (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

⚠️ ‌注意事项

  1. 镜像兼容性 ‌:优先使用官方仓库(Vagrant Cloud)的镜像7。
  2. 网络配置冲突 ‌:避免 private_network 的 IP 段与主机网络重叠8。
  3. 资源开销‌:虚拟机默认占用磁盘空间较大,建议配置到非系统盘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的系统,简洁小巧,后面应该有很大的使用价值!

相关推荐
熊出没9 小时前
Kubernetes 实操命令大全
云原生·容器·kubernetes
Evan芙9 小时前
nginx核心配置总结,并实现nginx多虚拟主机
运维·数据库·nginx
FIT2CLOUD飞致云9 小时前
操作教程丨通过1Panel快速安装Zabbix,搭建企业级监控系统
运维·服务器·开源·zabbix·监控·1panel
幸存者letp9 小时前
Python 常用方法分类大全
linux·服务器·python
知识分享小能手9 小时前
Ubuntu入门学习教程,从入门到精通,Linux操作系统概述(1)
linux·学习·ubuntu
KnowFlow企业知识库10 小时前
KnowFlow v2.3.0 重磅发布:适配 RAGFlow v0.22.1 和 MinerU v2.6.5、新增支持多模态视频解析,让知识库"看见"更多
linux·github
悟空空心10 小时前
服务器长ping,traceroute
linux·服务器·网络·ssh·ip·ping++
Ghost Face...10 小时前
Docker实战:从安装到多容器编排指南
运维·docker·容器
此生只爱蛋10 小时前
【Linux】正/反向代理
linux·运维·服务器
qq_54702617910 小时前
Linux 基础
linux·运维·arm开发