VirtualBox和 Vagrant

  • VirtualBox 是一款开源的虚拟化软件,用于在计算机上创建和运行虚拟机,可以模拟多种操作系统。
  • Vagrant 是一个虚拟化环境管理工具,它提供了一个简单的命令行界面来配置和管理虚拟机,主要是与 VirtualBox 一起使用。

下面我会介绍 VirtualBox 和 Vagrant 的安装、配置和基本使用方法。


1. 安装 VirtualBox 和 Vagrant

步骤 1:安装 VirtualBox
  1. 下载 VirtualBox

    • 访问 VirtualBox 官方网站,选择对应操作系统版本(Windows、macOS 或 Linux)的安装包并下载。
  2. 安装 VirtualBox

    • 双击下载的安装文件并按照提示完成安装。安装完成后,你可以通过 VirtualBox 的图形界面来管理虚拟机。
步骤 2:安装 Vagrant
  1. 下载 Vagrant

    • 访问 Vagrant 官方网站,下载适用于你操作系统的安装包。
  2. 安装 Vagrant

    • 与 VirtualBox 类似,运行安装包并按提示安装。
  3. 验证安装

    • 打开终端(Windows 用户可以使用 PowerShell 或命令提示符),运行以下命令以确保 Vagrant 已正确安装:
    vagrant --version
    

2. Vagrant 和 VirtualBox 的基本使用

步骤 1:创建一个 Vagrant 项目
  1. 创建一个新的项目目录:

    mkdir vagrant-test
    cd vagrant-test
    
  2. 初始化一个新的 Vagrant 配置文件:

    vagrant init
    

    这将会在当前目录下创建一个 Vagrantfile,用于定义虚拟机的配置。

步骤 2:编辑 Vagrantfile
  • 打开 Vagrantfile 文件,你会看到一个基本的配置模板,包含了各种配置选项。
  • 修改 Vagrantfile 文件,选择你想要使用的虚拟机镜像(也称为 “box”)。例如,我们可以使用 Ubuntu 20.04 的镜像:
    Vagrant.configure("2") do |config|config.vm.box = "ubuntu/focal64"
    end
    

Vagrant 通过远程镜像仓库(如 Vagrant Cloud)下载这些镜像。

步骤 3:启动虚拟机
  • 启动并创建虚拟机:

    vagrant up
    

    Vagrant 将会自动下载你在 Vagrantfile 中定义的 box,并通过 VirtualBox 创建并启动虚拟机。

  • 检查虚拟机的状态:

    vagrant status
    
步骤 4:连接到虚拟机
  • 使用 SSH 连接到启动的虚拟机:
    vagrant ssh
    

你现在已经进入了虚拟机的命令行,能够与虚拟机交互,就像操作物理机一样。

步骤 5:暂停、重启或销毁虚拟机
  • 暂停虚拟机(保存当前状态,稍后可以恢复):

    vagrant suspend
    
  • 重启虚拟机

    vagrant reload
    
  • 销毁虚拟机(删除虚拟机):

    vagrant destroy
    

3. Vagrant 的高级配置

共享文件夹

你可以将主机与虚拟机之间的文件夹同步,使得两者可以轻松共享数据。编辑 Vagrantfile,添加如下配置:

Vagrant.configure("2") do |config|config.vm.box = "ubuntu/focal64"config.vm.synced_folder "./data", "/vagrant_data"
end
  • ./data 是主机上的文件夹路径,/vagrant_data 是虚拟机中的路径。
  • 当虚拟机启动时,这两个文件夹将自动同步。
网络配置
  1. 端口转发:将主机的某个端口映射到虚拟机中的端口。例如,将主机的 8080 端口映射到虚拟机的 80 端口:

    Vagrant.configure("2") do |config|config.vm.box = "ubuntu/focal64"config.vm.network "forwarded_port", guest: 80, host: 8080
    end
    
  2. 私有网络:虚拟机与主机在同一个私有网络中,可以通过 IP 地址直接访问虚拟机。

    Vagrant.configure("2") do |config|config.vm.box = "ubuntu/focal64"config.vm.network "private_network", ip: "192.168.33.10"
    end
    
  3. 公共网络:虚拟机将使用主机的网络接口,获得与主机相同网络的 IP 地址(可能是 DHCP 分配的)。

    Vagrant.configure("2") do |config|config.vm.box = "ubuntu/focal64"config.vm.network "public_network"
    end
    
多虚拟机配置

你可以在 Vagrantfile 中定义多个虚拟机。如下配置了两个虚拟机:

Vagrant.configure("2") do |config|config.vm.define "web" do |web|web.vm.box = "ubuntu/focal64"web.vm.network "private_network", ip: "192.168.33.10"endconfig.vm.define "db" do |db|db.vm.box = "ubuntu/focal64"db.vm.network "private_network", ip: "192.168.33.11"end
end
  • 启动所有虚拟机:
    vagrant up
    

4. Vagrant 的插件

Vagrant 通过插件扩展功能,你可以安装不同的插件来增强 Vagrant 的功能。例如,安装 Vagrant 的 vbguest 插件来自动更新 VirtualBox 客户端增强功能:

vagrant plugin install vagrant-vbguest

5. 总结

  • VirtualBox 是虚拟化软件,提供了在物理机上创建和运行虚拟机的能力。
  • Vagrant 是一个虚拟机管理工具,主要与 VirtualBox 配合使用,它简化了虚拟机的创建、配置和管理。
  • 通过 Vagrant,你可以快速设置多个虚拟机、共享文件夹、网络配置,甚至可以用代码版本控制虚拟机配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/13895.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

通过全球最前沿的技术解决视频拼接中时延带来的的应用缺陷,使得全景视频拼接能够真正得以大范围使用和推广的智慧地产开源了。

智慧地产视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。通过计算机视觉和…

推荐一款好用的postman替代工具2024

Apifox 是国内团队自主研发的 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台,是非常好的一款 postman 替代工具。 它通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好接口文档,接口调试、数据 Mock、接口…

java作业项目以及azkaban的操作

参考内容: azkaban简介及azkaban部署、原理和使用介绍 1.在azkaban创建project 2.上传flow文件和project文件的压缩包 flow文件内容: nodes:- name: Testtype: commandconfig:command: java -jar /data/job/mtm-job-0.0.1-SNAPSHOT.jar --spring.profiles.activ…

【重生之我要苦学C语言】深入理解指针5

深入理解指针5 回调函数 回调函数就是一个通过函数指针调用的函数 如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数 回调函数不是由该函数的实现方直接调用,而是在特定的…

IOPaint模型部署教程

一、介绍 IOPaint是一款功能全面且强大的AI图像处理工具,它不仅免费开源,还由SOTA(State-of-the-Art,即最先进)AI模型驱动,为图像编辑和修复带来了前所未有的便利和高效。以下是对IOPaint的详细介绍&#…

吊打面试官系列:hashCode() 相同,equals() 就一定相等吗?

在编程的世界里,hashCode() 和 equals() 是一对形影不离的好兄弟。它们在Java中定义于Object类中,是每个Java对象都继承的两个方法。但是,如果你认为只要两个对象的hashCode()相同,它们的equals()就一定相等,那你就大错…

阿托伐他汀降脂疗效与安全性真实世界数据整理!

2024年9月,《中国医疗保险》杂志发布了题为《阿托伐他汀仿制药治疗高脂血症疗效与安全性的多中心回顾性队列研究》的重要研究结果。该研究由首都医科大学宣武医院牵头,联合上海交通大学医学院附属瑞金医院、吉林大学第一医院等10家国内顶尖三甲医院共同完…

深入剖析【C++继承】:单一继承与多重继承的策略与实践,解锁代码复用和多态的编程精髓,迈向高级C++编程之旅

​​​​​​​ 🌟个人主页:落叶 🌟当前专栏: C专栏 目录 继承的概念及定义 继承的概念 继承定义 定义格式 继承基类成员访问⽅式的变化 继承类模板 基类和派⽣类间的转换 继承中的作⽤域 隐藏规则 成员函数的隐藏 考察继承【作⽤…

“嵌入”在大语言模型中是解决把句子转换成向量表示的技术

上一篇:《人工智能是这样理解“情绪”的》 序言:这段话要优化吗?““嵌入”是一种将句子、单词或其他语言单位转换为向量表示的技术。这个向量通常位于高维空间中,它以一种能够表达相似性的方式编码出文本的含义或上下文。嵌入层…

操作系统——内存分区管理

本章主要讨论为什么要给内存进行划分和如何划分的问题。 为了给每一个进程都分配一个大小合适的内存块 以连续存储进程的程序和数据,使得各进程可以并发执行 目录 一、内存的划分方法 1、固定分区法 2、动态分区法 3、动态分区的数据管理结构 二、分区的分配与回…

ML 系列: 第 24 节 — 离散概率分布(泊松分布)

目录 一、说明 二、固定时间间隔示例 三、固定间隔的示例 四、泊松分布的主要特征 五、示例 5.1 平均客户数的计算: 5.2 用于计算和绘制泊松分布的 Python 代码: 一、说明 泊松概率分布是一种离散概率分布,它表示在固定的时间或空间间隔内发生…

【comfyui教程】如何用 ComfyUI 修复和上色老照片?详细教程让老照片焕发新生

前言 如何用 ComfyUI 修复和上色老照片?详细教程让老照片焕发新生 老照片承载着无数回忆,可时光不饶人,随着岁月流逝,它们渐渐变得模糊、泛黄,甚至出现了褪色、裂痕。对于想要留住这份珍贵记忆的人来说,修…

ThinkServer SR658H V2服务器BMC做raid与装系统

目录 前提准备 一. 给磁盘做raid 二. 安装系统 前提准备 磁盘和系统BMC地址都已经准备好,可正常使用。 例: 设备BMC地址:10.99.240.196 一. 给磁盘做raid 要求: 1. 将两个894G的磁盘做成raid1 2. 将两块14902G的磁盘各自做…

BUUCTF pwn2_sctf_2016 int 0x80方法

本文目的 BUUCTF的PWN的第一页的pwn2_sctf_2016的libc不适用辣,但网上一搜全是libc 然后怎么办嘞,都明摆着有个int 0x80,当然是用啊 所以水一篇 早上中午晚上好 老三样,下载程序,打开ida,拖进去 一眼好几…

如何构建一个功能强大的低代码平台网站?关键步骤与技巧全解析

随着数字化转型的加速,企业对敏捷开发和快速迭代的需求越来越迫切。低代码平台应运而生,成为连接业务需求和技术实现的重要桥梁。低代码平台不仅能够大幅降低技术门槛,还能够通过可视化界面和预配置组件简化开发流程,帮助企业快速…

Unity图形学之Shader2.0 模板测试

1.模版测试:符合条件的 通过 不符合条件的 像素 丢弃 比较公式: if((referenceValue&readMask) comparisonFunction (stencilBufferValue&readMask)) 通过像素 else 抛弃…

RK3588 快速上手

1、资料介绍 我的开发板是临滴科技的LKD3588,相关的官网上都可以找到,我这里给大家一个网盘链接 LKD3588-开发板(公开资料) https://pan.baidu.com/s/1snYcWY-S4rLMCE_3nGlHrw?pwd3588 LKD3588-开发板(保密资料&…

STM32完全学习——点亮LED灯

一、寄存器描述 首先我们知道STM32对外设的操作,是靠对寄存器的设置来完成的。因此我们想要点亮LED灯,就需要知道端口的控制寄存器,然后给寄存器设置不同的值就可以让端口来输出0或1,首先我这里使用的是GPIOA这个端口的0-8位来做…

【Python】如何使用Python-Tkinter打造炫酷动态心形动画 !保姆级教程

文章目录 教程:从零开始,逐步实现动态心形动画环境准备第一步:导入必要的模块第二步:定义画布参数第三步:定义心形生成函数第四步:实现点的散布与收缩第五步:定义曲线函数第六步:创建…

基于SSM的“家政预约管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SSM的“家政预约管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 家政预约管理系统功能结构图 系统首页界面 用户注册界面 家政…