Vagrant配合VirtualBox搭建虚拟机

目录

  • 前言
  • 一、软件下载及安装
    • 1.下载
    • 2.安装
    • 扩展:
  • 二、创建一个虚拟机
    • 1.Vagrant官方镜像仓库
  • 三、使用远程工具连接虚拟机
    • 1.修改相关配置文件
  • 四、虚拟机克隆及使用
    • 1.通用配置
    • 2.简单搭建一个java环境
    • 3.克隆虚拟机
    • 1.重命名虚拟机(可选)
    • 2.打包指定名称的虚拟机
  • 五、异常情况处理
    • 1.up启动报错
    • 2.身份验证失败

前言

    目前我用虚拟机主要作用是模拟linux系统下当服务器使用,直接用vmware虚拟机或者VirtualBox虚拟机进行搭建相关开发环境耗时,并且很多步骤冗余,至此想要探寻简化配置步骤,并且可以一次搭建多次复用的方式,我们从使用Vagrant开始,然后我们还有去探索克隆虚拟机,搭建完基础环境之后移植到其他机器也能快速使用的方法。

一、软件下载及安装

我这里是win环境下安装相关软件。博客那没多,要搞就搞点不一样的,都安装最新版本。

1.下载

Vagrant下载
截止2024/7/8最新版本为2.4.1版本,我是win64位系统,选择amd64,如果你的电脑是非常旧的版本或32位选择I686

在这里插入图片描述

VirtualBox下载
在这里插入图片描述
我就想要下载旧一些的版本,他可能稳定或者相关资料更多一些,这里也提供旧版本下载提示。
在这里插入图片描述
直达链接

2.安装

①安装VirtualBox
在选择安装位置时,你是否也把目录切换到了其他磁盘而不是默认的系统盘
在这里插入图片描述
解决方式有两种
第一种:不喜欢折腾的同学,直接换回系统盘安装。
第二种:分两种情况
第一种情况:选择其他盘后,建一个根目录,把它安装到该目录下。需要做一些准备。
例如我把它安装到了某个目录下:
在这里插入图片描述
需要创建完该文件夹后执行如下命令,以管理员身份运行cmd程序,执行如下几行代码。

icacls A:\VirtualBox /reset /t /c
icacls A:\VirtualBox /inheritance:d /t /c 
icacls A:\VirtualBox /grant *S-1-5-32-545:(OI)(CI)(RX) 
icacls A:\VirtualBox /deny *S-1-5-32-545:(DE,WD,AD,WEA,WA)
icacls A:\VirtualBox /grant *S-1-5-11:(OI)(CI)(RX)
icacls A:\VirtualBox /deny *S-1-5-11:(DE,WD,AD,WEA,WA)

执行完毕,重新安装并且选择你执行过的目录即可安装。
情况2:更换其他磁盘,并且不是放在更目录,此时你需要把指定目录和对应的根目录都执行一次,我嫌麻烦就没这么搞了。

②安装Vagrant
这个就没啥好选的了,最新版没找到选择安装目录的位置。在最后一步时,你选择了yes会立刻重启你的电脑。其他情况暂时未遇到问题。
在这里插入图片描述

扩展:


icacls工具:管理文件和目录的访问控制列表,这些操作类似于linux对目录用户组进行权限分配和设置。资料来源网络,如果错误还请指正。

1- icacls A:\VirtualBox /reset /t /c

这个命令将重置A:\VirtualBox目录及其所有子目录和文件的权限为默认设置。/t参数表示操作递归应用于所有子目录和文件,/c参数则表示如果遇到错误,命令会继续处理其他项。

2- icacls A:\VirtualBox /inheritance:d /t /c

此命令禁用了A:\VirtualBox目录及其子目录的继承权限。inheritance:d表示删除现有的继承权限条目,/t/c与上一个命令相同

3- icacls A:\VirtualBox /grant *S-1-5-32-545:(OI)(CI)(RX)

这个命令向A:\VirtualBox目录及其子目录授予对用户组*S-1-5-32-545(通常是本地用户组)的读取权限。(OI)表示对象继承,(CI)表示容器继承,(RX)是读取权限的缩写。

4- icacls A:\VirtualBox /deny *S-1-5-32-545:(DE,WD,AD,WEA,WA)

此命令拒绝A:\VirtualBox目录及其子目录中*S-1-5-32-545用户组的多种权限:删除、写入数据、添加子目录、写入扩展属性、写入属性等。

5- icacls A:\VirtualBox /grant *S-1-5-11:(OI)(CI)(RX)

类似于第三个命令,但这次是向*S-1-5-11(通常是管理员组)授予读取权限。

6- icacls A:\VirtualBox /deny *S-1-5-11:(DE,WD,AD,WEA,WA)

同第四个命令,但这次是对*S-1-5-11用户组拒绝多种权限。


如果你的电脑没有开启虚拟化,需要进入bois进行开始虚拟化设置!!!每个人电脑多少有一些差异,如果没有找到请按照自己电脑型号去网上查一下在哪块开启

在这里插入图片描述
在这里插入图片描述


二、创建一个虚拟机

1.Vagrant官方镜像仓库

仓库地址
我们使用vagrant 进行虚拟机的创建,使用他对应的官方镜像进行linux系统的创建。
相关命令在他的文档中有体现
在这里插入图片描述
初始化一个centos7虚拟机,启动虚拟机。
cmd执行如下命令

vagrant init centos/7
vagrant up

在这里插入图片描述
启动虚拟机

vagrant up

在这里插入图片描述
在这里插入图片描述


三、使用远程工具连接虚拟机

1.修改相关配置文件

使用远程工具连接虚拟机。

这里的网络和之前博客不太一样,注意甄别。找到对应的虚拟机网卡信息

ipconfig

从这里开始看就行
修改vagrant配置文件,把对应的ip设置为静态ip,在192.168.56.xx网段下即可
在这里插入图片描述
我的在第35行
在这里插入图片描述
首先,使用win的cmd进行远程ssh连接,修改一下linux中的一些ssh连接设置。

vagrant ssh

切换root用户,密码为:vagrant
在这里插入图片描述
·改参数值,找到 PasswordAuthentication 改为yes

vi /etc/ssh/sshd_config

刚进入文件时,使用vi的搜索功能。

/Passw

此时定位到对应的内容后,按i键进行编辑。
在这里插入图片描述

:wq

重启ssh服务

systemctl restart sshd

此时使用你自己的ssh工具即可进行访问
ip:192.168.56.10
username:root
password:vagrant

四、虚拟机克隆及使用

1.通用配置

更换一下国内yum源
先备份原有配置

sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

创建一个新的repo文件

sudo vi /etc/yum.repos.d/alimirror.repo

编辑新的源

[alimirror]
name=alimirror
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=0
enabled=1

清理缓存并更新元数据

yum clean all
yum makecache fast

更新yum

yum update

安装vim

yum install -y vim-enhanced

2.简单搭建一个java环境

下载一个jdk包
此处省略相关配置环境变量等,主要为了验证克隆之后是否能生效和使用。
在这里插入图片描述

3.克隆虚拟机

为虚拟机配置环境变量,这块不需要非得抄我的知道怎么配环境变量的同学自行配置即可
1.在这里插入图片描述

1.重命名虚拟机(可选)

为什么要对虚拟机重命名?
因为这样克隆虚拟机时,可以指定克隆那个虚拟机,当然你如果不想进行重命名,也有支持打包当前运行中的虚拟机方式。但是如果你同时需要启动多个虚拟机时,这块随意,不影响功能使用,这块也稍微麻烦一些,不想麻烦的可以跳过,个人感觉用处不大。

查询当前虚拟机名称

vagrant status

在这里插入图片描述
就叫default

重命名虚拟机名称,为第一步使用vagrant 打包做准备。
先关闭当前虚拟机。

1.修改Vagrantfile配置文件,增加虚拟机名称配置,就挨着config.vm.box配置再上放增加一行即可,结束时需要增加end。

  config.vm.define "vm1" do |node|xxxxconfig.vm.box = "centos/7"end

示例:

Vagrant.configure("2") do |config|config.vm.define "vm1" do |node|node.vm.box = "ubuntu/focal64"# ... 其他配置 ...end
end

我命名为vm1

config.vm.define "vm1" do |node|

在这里插入图片描述
2.重命名还未结束,还需要根据uuid更新底层逻辑

vboxmanage list vms

这个命令如果提示不是内外部命令,那就是你没有成功配置box的环境变量。
在这里插入图片描述
3.更新虚拟机名称

vboxmanage modifyvm {UUID} --name "虚拟机名称"

我的命令

vboxmanage modifyvm {604009aa-cd0c-40a6-978a-380b23c8b873} --name "vm1"

在这里插入图片描述
再次查询当前虚拟机名称

vagrant status

在这里插入图片描述
至此重命名完成。

2.打包指定名称的虚拟机

方式1:cmd命令方式(已经验证成功,可以正常使用)
使用vagrant命令打包当前的虚拟机
①查询所有虚拟机列表

vboxmanage list vms

在这里插入图片描述
打包指定名称的虚拟机
你想把打包的文件放到哪里,此时你就使用cmd进行切换目录
示例

cd A:\DATA\copy

此时执行打包命令后会把打包的文件放在该目录下
③进行打包
示例打包名为vm1虚拟机,输出文件为vagrant01.box

vagrant package --base vm1 --output copy.box 

这一步非常的耗时!!!,并且控制台无进度条,此时需要耐心等待。我的文件8个多G,从任务管理器能看出磁盘io每秒达到50mb左右的速度,也可能我电脑拉胯些比较慢。
两种方式判断是否完成
第一种:控制台出现不在阻塞之后Compressing即可
在这里插入图片描述

第二种:保存目录的文件不再是0kb大小
在这里插入图片描述
④将打包好的box文件add到vagrant
copy 可以理解为虚拟机的名字copy ,copy .box是我们打包的文件名称。
注意:需要切换到copy.box目录再执行下方命令

vagrant box add copy copy.box

⑤初始化一个新的vagrant环境

vagrant init copy 

执行完成后只有一个Vagrantfile文件
⑥编辑这个新的Vagrantfile文件

Vagrant.configure("2") do |config|config.vm.define "copy"config.vm.box = "copy"config.vm.network "private_network", ip: "192.168.56.20"config.ssh.username = "vagrant"config.ssh.password = "vagrant"
end

全量替换成我的,如果你不是交copy则替换你对应的虚拟机名称,ssh这块是因为解决某个异常添加的,具体异常请在下方查阅。
⑦更改默认的虚拟机位置
在这里插入图片描述
选择其他,找到你init的目录即可
在这里插入图片描述
启动这个虚拟机

vagrant up copy

此时启动后virtual box页面会有一个虚拟机,但是名称不是我们起的copy,而是一个很长一串的名称,加上copy内容,这块还在研究,不影响使用。

⑧再次修改ip地址
进入控制台,使用默认的username和password进行登录,在切换到root用户

vagrant ssh

username和password都为

vagrant
su root
vagrant

先查询一下ip地址是否还是之前打包的ip地址

ip addr show

我这块已经手动改过了,你的话应该还是192.168.56.10,此时需要在服务器端更改一下。
在这里插入图片描述
更改ip地址
切换到该目录下,查询自己需要更改的文件,我的文件是eth1文件,你的可能不是

cd /etc/sysconfig/network-scripts/

在这里插入图片描述

vi ifcfg-eth1

在这里插入图片描述
修改完保存重启网路服务一下

systemctl restart network

验证一下是否生效

ip addr show eth1

至此以命令方式的克隆虚拟机完成,之前搭建的java环境也正常使用。

方式2:virtual box方式打包(未验证成功,正在解决问题)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
复制成功之后,还是需要把对应的文件夹放到系统盘的默认路径下,否则检测不到(这块需要再研究一下,目前只能是放在原来虚拟机的文件夹下)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打开我们复制的这个虚拟机文件
在这里插入图片描述
在这里插入图片描述
正在解决ing

五、异常情况处理

vagrant官方网站
有问题实在解决不了,那就只能肝官网文档了。

1.up启动报错

The machine with the name ‘copy’ was not found configured for this Vagrant environment.

解决方式
Vagrantfile文件增加配置内容

config.vm.define "copy"

2.身份验证失败

copy:Warning: Authentication failure. Retrying…

直接使用明文username和password,目前还没有进行更加深入的研究,只用这个方式先解决,如果大家有其他优雅的方式欢迎一起交流讨论。

config.ssh.username = "vagrant"
config.ssh.password = "vagrant"

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

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

相关文章

计算机视觉研究方向初学习,计算机视觉都有什么方向??!到底是干什么的?!

计算机视觉研究方向初学习,计算机视觉都有什么方向??!到底是干什么的?! 语义分割图像分类目标检测和定位实例分割、全景分割物体跟踪姿态估计人脸识别人体识别图像增强风格迁移图像生成视觉问答视频分析光学…

大话光学原理:4.散射:瑞利、拉曼、米氏和布里渊

这是一缕柔和的光,在空气的舞台上轻盈地跳跃。它悠然自得,在宁静的空间中缓缓前行。然而,一片细薄透明的介质挡住了它的脚步,它毫无预兆地撞上了这片障碍。在这短暂的接触中,它被分解成无数微小的粒子,被迫…

【总线】AXI第九课时:介绍AXI响应信号 (Response Signaling):RRESP和 BRESP

大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁…

Python | Leetcode Python题解之第226题翻转二叉树

题目: 题解: class Solution:def invertTree(self, root: TreeNode) -> TreeNode:if not root:return rootleft self.invertTree(root.left)right self.invertTree(root.right)root.left, root.right right, leftreturn root

NLP入门——卷积语言模型的搭建、训练与预测

语言模型建模是针对句子建模,主要分为掩码语言模型和自回归语言模型。 我们从corpus中截取一句话作为例子,这句话是bpe分词后的句子: 1994 年 5 月 17 日 安全 理事会 第 33 77 次 会议 通过 掩码语言模型的主要机制是:例如将33 7…

关于MySQL mvcc

innodb mvcc mvcc 多版本并发控制 在RR isolution 情况下 trx在启动的时候就拍了个快照。这个快照是基于整个数据库的。 其实这个快照并不是说拷贝整个数据库。并不是说要拷贝出这100个G的数据。 innodb里面每个trx有一个唯一的trxID 叫做trx id .在trx 开始的时候向innodb系…

「C++系列」C++ 修饰符类型

文章目录 一、C 修饰符类型1. 访问修饰符(Access Modifiers)2. 存储类修饰符(Storage Class Specifiers)3. 类型修饰符(Type Modifiers)4. 函数修饰符 二、C 修饰符类型-案例1. 访问修饰符案例2. 存储类修饰…

AI转绘_animatediff-cli-prompt-travel

这个工具有两种主要模式:它可以直接通过提示创建视频,或者它可以对现有视频进行风格化。还有方法可以提高视频的分辨率。 正如工具名称所示,它的一个主要特点是"提示旅行"。这意味着你可以例如使用特定的提示用于前20帧&#xff0…

个人标准流程管理系统

个人标准流程管理系统(Personal Standard Operating Procedure System, PSOPS)是一种帮助个人组织和优化日常任务、项目管理、学习计划和其他重复性活动的工具。它旨在提升个人效率,确保各项事务按照预设的标准流程执行。以下是设计这样一个系…

计算给定数字的阶乘

1 问题 计算给定数字的阶乘. 2 方法 使用while循环。使用for循环。使用函数。 通过实验、实践等证明提出的方法是有效的&#xff0c;是能够解决开头提出的问题。 代码清单 1 使用while循环numberint(input(请输入一个数字:))factorial1i1while i<number: factorialfactor…

PTrade常见问题系列6

执行k_start.sh脚本发现没有生成日志&#xff1f; 执行k_start.sh脚本发现没有生成日志&#xff1f; 1、检查k_start.sh脚本发现执行downloader前需要检查是否有已存在的downloader进程&#xff0c;ps -ef|grep downloader 发现有很多历史的僵尸进程&#xff0c;所以下载进程…

Mosh|内连接、外连接、左连接、右连接(未完)

下图取自菜鸟教程&#xff0c;侵权删&#xff5e; 一、内连接&#xff1a;Inner Joins 模版&#xff1a;SELECT * FROM A JOIN B ON 条件 含义&#xff1a;返回A与B的交集&#xff0c;列为AB列之和 练习&#xff1a;将order_items表和products表连接&#xff0c;返回产品id和…

鸿蒙语言基础类库:【@ohos.util (util工具函数)】

util工具函数 说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 该模块…

【论文阅读笔记】Meta 3D AssetGen

【论文阅读笔记】Meta 3D AssetGen: Text-to-Mesh Generation with High-Quality Geometry, Texture, and PBR Materials Info摘要引言创新点 相关工作T23D基于图片的3d 重建使用 PBR 材料的 3D 建模。 方法文本到图像:从文本中生成阴影和反照率图像Image-to-3D:基于pbr的大型重…

hdfs大规模数据存储底层原理详解(第31天)

系列文章目录 一、HDFS设计原理 二、HDFS系统架构 三、HDFS关键技术 四、HDFS应用实例 五、解决HDFS不能处理小文件详解问题 文章目录 系列文章目录前言一、设计原理二、系统架构三、关键技术四、应用实例五、解决HDFS不能处理小文件详解问题1. 合并小文件2. 优化Hive配置3. 使…

计算机的错误计算(二十六)

摘要 结合计算机的错误计算&#xff08;二十四&#xff09;中的 Maple 环境下的计算过程&#xff0c;&#xff08;二十五&#xff09;讨论了&#xff08;不&#xff09;停机问题。事实上&#xff0c;其它数学软件比如 Mathematica 也存在该问题。 &#xff08;不&#xff09;停…

操作系统:信号究竟是什么?如何产生?

OS信号 一、信号的概念二、信号的产生1&#xff09;终端按键产生信号1、 前台进程、后台进程2、验证终端按键是否产生信号 2&#xff09;调用系统函数向进程发信号3&#xff09;硬件异常产生信号1、浮点数溢出&#xff0c;CPU产生信号2 浮点数溢出&#xff0c;产生信号原理3. 空…

基于与STM32的加湿器之雾化片驱动

基于与STM32的加湿器之雾化片驱动 加湿器是一种由电力驱动&#xff0c;用于增加环境湿度的家用电器。加湿器通过特定的方式&#xff08;如蒸发、超声波振动或加热&#xff09;将水转化为水蒸气&#xff0c;并将这些水蒸气释放到空气中&#xff0c;从而增加空气中的湿度。主要功…

Spin Image(旋转图像)

Spin Image特征描述子原理 Spin Image是Johnson于1999年提出&#xff0c;Lazebnik于2005年完善的基于点云空间分布的特征描述方法&#xff0c;其思想是将一定区域的点云分布转换成二维的Spin Image&#xff0c;然后对场景和模型的Spin Image进行相似性度量。Spin Image方法与通…

怎么制作gif动图,视频制作GIF动画更简单

在社交媒体和网络交流中&#xff0c;GIF动画以其生动活泼的表现形式成为了表达情感、幽默和创意的热门媒介。无论是分享日常趣事&#xff0c;还是制作专业演示&#xff0c;一个恰到好处的GIF动图总能吸引目光&#xff0c;传递信息。 但你知道吗&#xff1f;即使没有专业的设计背…