docker的开源跨平台替代Vagrant

发布于:2025-08-11 ⋅ 阅读:(17) ⋅ 点赞:(0)

在看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. 初始化虚拟机配置

     
    mkdir ~/vm-centos7 && cd ~/vm-centos7  # 创建项目目录
    vagrant init centos/7                  # 生成 Vagrantfile 配置文件:ml-citation{ref="3,7" data="citationList"}
    

  2. 启动并登录虚拟机

     
    vagrant up     # 启动虚拟机(首次自动下载镜像)
    vagrant ssh    # SSH 登录虚拟机(默认用户 vagrant):ml-citation{ref="7,12" data="citationList"}
    

  3. 常用命令速查

    命令 功能
    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)管理

  1. 查找与添加镜像

     
    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. 列出与删除镜像

     
    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
    


⚠️ ‌注意事项

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


网站公告

今日签到

点亮在社区的每一天
去签到