当前位置: 首页 > news >正文

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 的完整使用指南,涵盖核心操作与进阶技巧:


🔧 ‌一、环境安装

  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 nameLatest VersionDownloadsLatest ReleaseProvidersArchitectures
 bento/freebsd-14.3202508.03.014天前

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

http://www.dtcms.com/a/322371.html

相关文章:

  • Zread:把 GitHub 仓库“一键变说明书”的体验与实战指南
  • 【超强总结】图像分割模型训练核心:优化器选型与学习率调控策略
  • 【数据结构初阶】--文件归并排序
  • 前端懒加载技术全面解析
  • Spring学习笔记:Spring AOP入门以及基于Spring AOP配置的深入学习与使用
  • Vue3的简单学习
  • docker基础前置
  • day18 - CSS函数
  • ADB(Android Debug Bridge)—— Android调试桥
  • Android MediaMetadataRetriever取视频封面,Kotlin(1)
  • 【Android调用相册、拍照、录像】等功能的封装
  • Milvus 向量数据库基础操作解析
  • 进阶向:Python编写网页爬虫抓取数据
  • vulnhub-Beelzebub靶场通关攻略
  • 【Spring Boot 快速入门】八、登录认证(二)统一拦截
  • Android中RecyclerView基本使用
  • 鸿蒙分布式任务调度深度剖析:跨设备并行计算的最佳实践
  • Java安全-组件安全
  • 哈希与安全
  • Red Hat Enterprise Linux 7.9安装Oracle 11.2.0.4单实例数据库-图文详解
  • urmom damn the jvm
  • vscode/trae 的 settings.json 中配置 latex 的一些记录
  • QT环境搭建
  • 数学学习 | 高数、线代、概率论及数理统计荐书
  • 【Task2】【Datawhale AI夏令营】多模态RAG
  • 图片拆分工具,自定义宫格切割
  • 第4章 程序段的反复执行4.2while语句P128练习题(题及答案)
  • CVPR中深度学习新范式:通用性、鲁棒性与多模态的创新突破
  • 六、CV_图像增强方法
  • Python 程序设计讲义(66):Python 的文件操作——数据的处理