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

相关推荐
上天_去_做颗惺星 EVE_BLUE31 分钟前
Docker高效使用指南:从基础到实战模板
开发语言·ubuntu·docker·容器·mac·虚拟环境
Yana.nice1 小时前
openssl将证书从p7b转换为crt格式
java·linux
AI逐月1 小时前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
小白跃升坊2 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey2 小时前
【Linux】线程同步与互斥
linux·笔记
杨江2 小时前
seafile docker安装说明
运维
舰长1152 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
好好沉淀2 小时前
Docker开发笔记(详解)
运维·docker·容器
zmjjdank1ng2 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.2 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居