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的系统,简洁小巧,后面应该有很大的使用价值!

相关推荐
whiteBrocade1 小时前
APM-Grafana-Mimir代替Prometheus实现指标长期存储
docker·grafana·prometheus
monster_风铃3 小时前
华为实验:SSH
运维·ssh
捏尼卜波卜4 小时前
try/catch/throw 简明指南
linux·开发语言·c++
IDOlaoluo5 小时前
Linux 安装 JDK 8u291 教程(jdk-8u291-linux-x64.tar.gz 解压配置详细步骤)
java·linux·运维
烷烯6 小时前
安全基础DAY1-安全概述
linux·服务器·安全·常见网路攻击
YueiL7 小时前
Linux文件系统基石:透彻理解inode及其核心作用
linux·网络·数据库
神即道 道法自然 如来7 小时前
如何在linux(CentOS7)上面安装 jenkins?
linux·运维·jenkins
fouryears_234177 小时前
参考线程池构建一个高性能、配置驱动的Docker容器池
docker·容器·oj
xiao-xiang8 小时前
jenkins-飞书通知机制
运维·jenkins·飞书