轻松搭建 VirtualBox + Vagrant + Linux 虚拟机

news2024/9/21 1:35:56

一、准备工作

首先,我们来了解一下搭建 VirtualBox + Vagrant + Linux 虚拟机所需的软件准备工作。

VirtualBox 的下载地址:您可以通过访问https://www.virtualbox.org/wiki/Downloads获取适用于您系统的版本。

Vagrant 的下载地址:前往https://www.vagrantup.com/downloads进行下载。

需要注意的是,在安装 VirtualBox 时,它可能会与一些软件存在冲突,例如红蜘蛛、360、净网大师等。如果您的电脑上安装了这些可能冲突的软件,需要先将其卸载,然后重启电脑,以确保 VirtualBox 能够正常安装和运行。

二、安装步骤

(一)VirtualBox 安装

1、访问https://www.virtualbox.org/wiki/Downloads,根据您的操作系统选择对应的安装包下载。

2、双击下载的安装包,打开安装向导。点击“Next”进入下一步。

3、在功能组件选择界面,通常默认选择即可,若有特殊需求可自行勾选。

4、选择安装路径,建议不要安装在系统盘(C 盘),可点击“Browse”选择其他磁盘。

5、选择快捷方式创建选项,根据个人习惯勾选。

6、弹出警告界面,提示安装网络组件会重置当前网络,点击“Yes”。

7、准备安装,点击“Install”开始安装。

8、等待安装完成,安装过程中可能会弹出一些提示,根据提示进行操作。

9、安装完成后,勾选“启动 Oracle VM VirtualBox 虚拟机”,点击“Finish”。

(二)Vagrant 安装

前往https://www.vagrantup.com/downloads,根据您的操作系统选择合适的版本进行下载。

1、双击下载的安装文件,按照默认设置一路点击“Next”进行安装。

2、安装完成后,打开命令行窗口,输入“vagrant -v”命令,输出版本号即表示安装成功。

(三)安装位置选择

1、VirtualBox:默认虚拟电脑位置下载安装的位置在c盘用户目录:如:“C:\Users\86135\VirtualBox VMs”,会大量占用C盘空间,建议修改到其他盘。按如下步骤操作:

打开 VirtualBox 程序,点击“管理”->“全局设定”(或按下快捷键 Ctrl + G),在“常规”栏里将“默认虚拟电脑位置”修改为其他容量较大的磁盘路径。

下载安装的虚拟机将在你设置的路径下:

2、Vagrant:对于 Windows 系统,新建系统环境变量“VAGRANT_HOME”,变量值设置为您期望的存储位置,如“E:\VirtualBox\.vagrant.d”。

通过以上步骤,您可以顺利完成 VirtualBox 和 Vagrant 的安装,并选择合适的安装位置。

三、初始化与启动虚拟机

(一)使用"vagrant init"命令初始化 Centos 虚拟机(以下以安装centos7为例)

首先,打开命令行窗口,执行 vagrant init 命令;

命令格式:

#vagrant init 命令格式
vagrant init 虚拟机镜像名称/版本号

# 例如要创建一个centos7的虚拟机可以使用如下命令:
vagrant init centos/7

执行vagrant init centos/7命令会在当前目录下自动生成一个 Vagrantfile 配置文件。

(二)启动虚拟机的操作

在完成初始化配置后,即可启动虚拟机。在Vagrantfile所在目录,使用 vagrant up 命令启动虚拟机,此过程可能需要一些时间,Vagrant 将自动从镜像仓库(https://app.vagrantup.com/boxes/search)下载 CentOS 7 镜像,并在 VirtualBox 中创建和启动虚拟机。

 安装启动完成后,系统自动创建两个用户账号 root和vagrant, 密码均是 vagrant

四、网络配置

虚拟机网络配置至关重要,它直接影响到虚拟机的性能和可用性。

查看本机 IP

在进行虚拟机网络配置前,首先要查看本机 IP。这可以通过在命令行输入特定命令来实现,如在 Windows 系统中输入 ipconfig ,在 Linux 系统中输入 ifconfig 。通过这些命令,我们能够获取到本机的网络信息,包括 IP 地址、子网掩码和网关等,为后续的虚拟机网络配置提供重要参考。

修改虚拟机网络 IP

修改虚拟机网络 IP 是为了满足不同的需求,如固定 IP 以方便开发和管理。对于不同的虚拟机软件和操作系统,修改方法有所不同。以 VirtualBox + Vagrant + Linux 为例,可以通过修改 Vagrantfile 文件来实现。打开该文件,找到相关的网络配置部分,按照本机网络信息和需求修改 IP 地址等参数。修改完成后保存,并通过相应命令重启虚拟机使配置生效。

笔者本机VirtualBox的IP信息,192.168.56.1

 为了虚拟机和本机能进行通信,需要设置虚拟机IP与virsualbox的ip在同一网段,

可以看到本机的VirtualBox的ip网段为192.168.56.1,所以虚拟机的IP必须是192.168.56.2-192.168.56.255。

以下示例修改Vagrantfile文件中的参数:config.vm.network "private_network", ip: "192.168.56.13"

 保存修改需重启虚拟机方可生效,执行命令重启:

vagrant reload

验证网络配置是否成功

1、进入虚拟机查看虚拟机网络配置

打开虚拟机安装文件夹(Vagrantfile所在目录),在该文件夹下打开 cmd 窗口,执行 vagrant ssh 命令,即可登录到虚拟机。需要注意的是,登录虚拟机时默认用户为 vagrant 。

在虚拟机中执行命令(centos7为例,其他版本Linux命令可能有差异):ip addr 

可以看到虚拟机网络配置中IP与Vagrantfile文件中的参数:config.vm.network "private_network", ip: "192.168.56.13"相同,表示网络配置成功。

2、通过ping命令检测虚拟机与本机的连通性。

本机物理IP:

在虚拟机内部ping 192.168.1.55,显示网络正常

反过来从本机ping虚拟机IP:192.168.56.13,也显示网络正常。

 

至此,网络基本配置已经完成,可以正常使用vagrant ssh命令进行连接。 

使用exit命令可退出登录;

五、密码登录配置

截止步骤四(网络配置)能使用vagrant ssh正常连接,但是使用第三方SSH工具密码连接时会发现依然连接失败,要实现虚拟机的密码登录以便使用 XShell 等工具进行连接,您可以按照以下步骤进行操作:

(一)VirtualBox 虚拟机密码登录配置

1、打开 VirtualBox 虚拟机,以管理员身份登录 Linux 系统。

2、执行命令 sudo vi /etc/ssh/sshd_config 打开 SSH 配置文件。

3、找到 PasswordAuthentication 这一行,将其值从 no 修改为 yes ,以允许密码登录。

4、找到 PermitRootLogin 这一行,确保其值为 yes ,允许 root 用户登录。

5、按 Esc 键,输入 :wq 保存并退出编辑。

6、执行命令 sudo service sshd restart 重启 SSH 服务,使配置生效。

(二)SSH工具密码登陆(以XShell 为例)
  1. 打开 XShell 软件,点击“新建”按钮。
  1. 在“新建会话属性”窗口中,输入虚拟机的 IP 地址。
  1. 设置连接协议为 SSH ,端口一般为 22 (如果在 SSH 配置文件中修改了端口,则使用修改后的端口)。
  1. 输入用户名(一般为 root )和密码(您在虚拟机中设置的密码,默认密码为:vagrant)。
  1. 点击“确定”保存会话设置。
  1. 双击新建的会话即可连接到虚拟机。

通过以上步骤,您就可以成功配置虚拟机的密码登录,并使用 XShell 等工具进行连接,方便您对虚拟机进行操作和管理。

六、创建多台虚拟机

在不同的文件夹下面重复以上的操作步骤即可创建多台虚拟机并相互可访问。

七、Vagrant 常用的命令

1. `vagrant init` :初始化一个 Vagrant 项目,创建一个默认的 `Vagrantfile` 配置文件。

2. `vagrant up` :启动虚拟机。

3. `vagrant halt` :关闭虚拟机。

4. `vagrant suspend` :挂起虚拟机。

5. `vagrant resume` :恢复挂起的虚拟机。

6. `vagrant destroy` :销毁虚拟机,删除相关数据。

7. `vagrant status` :查看虚拟机的状态(运行、关闭等)。

8. `vagrant ssh` :通过 SSH 连接到正在运行的虚拟机。

9. `vagrant box list` :列出已安装的 Vagrant 盒子(虚拟机镜像)。

10. `vagrant box add` :添加新的 Vagrant 盒子。

11. `vagrant provision` :重新应用配置文件中的 provisioning 脚本。

12. `vagrant reload` :重新加载虚拟机配置并重启虚拟机。

13. `vagrant plugin list` :列出已安装的 Vagrant 插件。

14. `vagrant plugin install` :安装指定的 Vagrant 插件。

这些命令可以帮助您管理和操作 Vagrant 虚拟机。

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

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

相关文章

麦克风领夹式的哪个牌子最好,无线领夹麦克风十大品牌

在直播和自媒体行业迅速崛起的今天,无线麦克风因其便携性和实用性成为了视频制作和直播带货中不可或缺的工具。面对市场上从几十元到几千元不等的无线麦克风,作为一位资深直播运营专家,我深知选择合适的设备对于提升直播质量和观众体验的重要…

【简历】南京某大学顶级211硕士:拿offer可能性低

注:为保证用户信息安全,姓名和学校等信息已经进行同层次变更,内容部分细节也进行了部分隐藏 简历说明 这份简历的背景是南京的一所顶级211的硕士,从学校背景来讲呢,求职目标就是大厂的秋招,但是因为项目描述的亮点比较少&#x…

JavaScript青少年简明教程:为何学习JavaScript及JavaScript简介

JavaScript青少年简明教程:为何学习JavaScript及JavaScript简介 JavaScript最初是为web浏览器(前端开发)设计的。它可以在所有现代浏览器中运行,包括Chrome, Firefox, Safari, Edge等。 这意味着JavaScript代码可以在任何能运行…

three完全开源扩展案例02-跳动的音乐

更多案例尽在https://threelab.cn/ 演示地址 import * as THREE from "three"; import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";let mediaElement; let analyser; let scene; let camera; let renderer; let controls; …

STM32寄存器开发基础-点亮LED灯(讲解GPIO口输出)

文章目录 一、前言二、系列文章三、如何学习?四、STM32编程-控制LED灯4.1 STM32开发板4.2 原理图4.3 STM32的GPIO口4.4 开时钟4.5 配置GPIO模式的寄存器4.6 编写LED灯的初始化代码4.7 GPIO口控制输出寄存器4.8 一个完整的闪光灯程序代码 五、关于寄存器是问题 一、前…

Vue中实现在线画流程图实现

概述 最近在调研一些在线文档的实现,包括文档编辑器、在线思维导图、在线流程图等,前面的文章基于语雀编辑器的在线文档编辑与查看实现了文档编辑器。在本文,分享在Vue框架下基于metaeditor-mxgraph实现在线流程图。 实现效果 实现 1. 添加…

iPhone 16 Pro系列将标配潜望镜头:已开始生产,支持5倍变焦

ChatGPT狂飙160天,世界已经不是之前的样子。 更多资源欢迎关注 7月6日消息,据DigiTimes最新报道,苹果将在iPhone 16 Pro中引入iPhone 15 Pro Max同款5倍光学变焦四棱镜潜望镜头。 报道称,目前苹果已经将模组订单交至大立光电和玉…

MC0246王国傀儡师

目录 题目描述 格式 样例 备注 运行限制 原题链接 代码思路 题目描述 在一个奇幻的王国中,存在着一个名叫小码哥的魔法师。小码哥手下收藏着 n 个傀儡,他靠着手下的傀儡演出赖以生存。因此,傀儡的魅力度与他的生存息息相关。他为每个…

(CVPR-2024)SwiftBrush:具有变分分数蒸馏的单步文本到图像扩散模型

SwiftBrush:具有变分分数蒸馏的单步文本到图像扩散模型 Paper Title:SwiftBrush: One-Step Text-to-Image Diffusion Model with Variational Score Distillation Paper 是 VinAI Research 发表在 CVPR 24 的工作 Paper地址 Code:地址 Abstract 尽管文本…

EXSI 实用指南 2024 -编译环境 Mac OS 安装篇(一)

1. 引言 在现代虚拟化技术的快速发展中,VMware ESXi 作为领先的虚拟化平台,凭借其高性能、稳定性和丰富的功能,广泛应用于企业和个人用户。ESXi 能有效地提高硬件资源利用率,并简化 IT 基础设施的管理。然而,如何在 V…

一个便捷的web截图库~【送源码】

随着时间的发展,前端开发的范围越来越广,能够实现的功能也越来越多,要实现的功能也五花八门,今天就给大家介绍一个web截图库,让前端也能实现截图功能—— js-web-screen-shot js-web-screen-shot js-web-screen-shot 是一个基于 …

8627 数独

为了判断数独解是否合法,我们需要遵循以下步骤: 1. **检查每一行**:确保1到9每个数字在每一行中只出现一次。 2. **检查每一列**:确保1到9每个数字在每一列中只出现一次。 3. **检查每个3x3的宫**:确保1到9每个数字在…

跨域解决方案处理

文章目录 首先了解什么是跨域1. 什么是跨域?2. 源是什么?3. 同源策略又是什么?4. 同源请求与非同源请求5. 浏览器对跨域请求的限制有哪些? 解决跨域方案1. JSONP(此解决方式已过时)2. CORS(此方…

jstat命令介绍

jstat:查看JVM统计信息 一 基本情况二 基本语法2.1 option参数1. 类装载相关的:2. 垃圾回收相关的-gc:显示与GC相关的堆信息。包括Eden区、两个Survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息。-gccapacity:显示…

【C】Structure

参考摘抄学习来自: C 结构体C语言必学知识点 "结构体"详细解析!C 语言之结构体最全面总结C typedef 文章目录 1 定义2 初始化3 结构体大小的计算4 访问结构成员5 结构作为函数参数6 指向结构的指针7 结构体数组8 动态申请结构体 1 定义 它允…

构造函数的初始化列表,static成员,友元,内部类【类和对象(下)】

P. S.:以下代码均在VS2022环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 博主主页:LiUEEEEE                        …

【C++:默认成员函数】

构造函数 特点 没有返回值支持函数重载对象实例化时,编译器自动调用作用不是构造,而是初始化函数名与类名相同无参函数和全缺省的函数,不用传参就能调用的函数叫做默认构造函数 构造函数是一个特殊的成员函数 注:无参构造函数在实…

一场夏测杀出个“双冠王”,极越01成为纯电SUV标杆

文 | AUTO芯球 作者 | 雷慢 万万没想到,懂车帝夏测运动会杀出一匹最大的黑马,竟然是极越01。 当前正在进行的懂车帝夏测运动会,在“纯电SUV/MPV续航达成率”赛事中,极越01以85.8%的续航达成率获得第一名。并且由于赛制规则限制…

Go泛型详解

官网文档:https://go.dev/blog/intro-generics 泛型为该语言添加了三个新的重要功能: 函数和类型的类型参数。将接口类型定义为类型集,包括没有方法的类型。类型推断,在许多情况下允许在调用函数时省略类型参数。 类型参数&…

Java高级重点知识点-22-缓冲流、转换流、序列化流、打印流

文章目录 缓冲流字节缓冲流字符缓冲流 转换流InputStreamReader类OutputStreamWriter类 序列化ObjectOutputStream类ObjectInputStream类 打印流 缓冲流 缓冲流,也叫高效流,是对4个基本的 FileXxx 流的增强,所以也是4个流 基本原理: 缓冲流的…