0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍一款用于管理虚拟机的命令行使用软件Vagrant

jf_ro2CN3Fa 来源:CSDN 2023-01-09 10:27 次阅读

一、vagrant介绍

是一款用于管理虚拟机的命令行使用软件,用Ruby语言开发而成。换言说,可以省去你使用虚拟机创建操作系统的所有操作,比如创建虚拟机,挂在镜像文件,一步步点击安装等等,使用vagrant,这些都不需要做了,简简单单两行命令,快速创建属于你个人的系统。

在开发方面,Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用。我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,非常霸气。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

二、安装用到的软件

1、安装virtualBox (此处不再讲解安装)

虽然 Vagrant 也支持 VMware,不过 VMware 是收费的,对应的 Vagrant 版本也是收费的

a48dae26-8e49-11ed-bfe3-dac502259ad0.png

2、安装Vagrant

(1)进入官网https://www.vagrantup.com/downloads,选择版本下载

a4d4ffba-8e49-11ed-bfe3-dac502259ad0.png

(2)傻瓜式安装

a4e1459a-8e49-11ed-bfe3-dac502259ad0.png

(3)检测是否安装成功

命令行输入vagrant,如下图显示,说明安装成功。

a4f797f0-8e49-11ed-bfe3-dac502259ad0.png

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

三、下载系统镜像。

在vagrant官网中,有一个findbox的按钮,这个是vagrant的镜像库,里边列出了都要哪些镜像可以用,并且提供了操作文档。

a51ddd84-8e49-11ed-bfe3-dac502259ad0.png

但是这里默认下载往往会比较慢,所以下面我会介绍如何在其它地方下载到基础镜像,然后按照自己的需要重置。如果网速较好,下载顺利的朋友可以选择性地跳过部分内容。

下面我给出最常用的两个 Linux 操作系统镜像的下载地址:

CentOS

在其中选择自己想要下载的版本,列表中有一个 vagrant 目录,里面是专门为 vagrant 构建的镜像。选择其中的 .box 后缀的文件下载即可。这里可以使用下载工具,以较快的速度下载下来。

Ubuntu

同样先选择想要的版本,然后选择针对 vagrant 的 .box 文件即可。

如果这里官网的速度较慢,还可以从 清华大学的镜像站 下载。

例如:

a52a230a-8e49-11ed-bfe3-dac502259ad0.png

四、查询、添加、删除box

接下来我们需要将下载后的 .box 文件添加到 vagrant 中。Vagrant 没有 GUI,只能从命令行访问。

(1)查询vagrant 已经管理的 Box 有哪些:

vagrantboxlist
a5363956-8e49-11ed-bfe3-dac502259ad0.png

(2)添加box命令

vagrantboxaddbox的文件路径及文件名--namecentos8

vagrant box add 将 box 添加到vagrant 中,命令后面跟着的是box文件路径

--name centos8 可以为这个 box 指定一个名字

安装好以后如下图,可以在用查询命令查询一下,可看到安装好的box。

a540fc6a-8e49-11ed-bfe3-dac502259ad0.png

(3)删除box命令

vagrantboxremoveNAME#根据名字删除指定的box
a54f2cea-8e49-11ed-bfe3-dac502259ad0.png

五、vagrant基本操作

(1)新建虚拟机

我们在创建虚拟机的时候,会生产一些文件,所以我们为每个虚拟机最好都创建一个独立的文件夹。然后进入文件夹中。在文件夹路径下初始化

vagrantinit[boxname]#加上boxname表示使用哪个box创建虚拟机
a56c5ffe-8e49-11ed-bfe3-dac502259ad0.png

初始化后,会在文件夹下生成一个配置文件

a579081c-8e49-11ed-bfe3-dac502259ad0.png

(2) 启动虚拟机

所有的 vagrant 命令都需要在 Vagrantfile 所在的目录下执行:

vagrantup
a5840a28-8e49-11ed-bfe3-dac502259ad0.png

如果没有报错,说明启动成功。(注意box的名字,写错了会报错)

(3)查看虚拟机状态

vagrantstatus
a591ba1a-8e49-11ed-bfe3-dac502259ad0.png

如果是running 就说明我们的虚拟机,启动成功了

(4)链接虚拟机

如果启动没问题,此时在vbox的列表中自动生成一个虚拟机,这个虚拟机以文件夹名字命名,可以看到自动创建的虚机:

a5b33974-8e49-11ed-bfe3-dac502259ad0.png

执行 vagrant ssh 就能以 vagrant 用户直接登入虚机中。

root 用户没有默认密码,也不能直接登录。需要 root 权限的命令可以通过在命令前添加 sudo 来执行,也可以执行 sudo -i 直接切换到 root 用户。

a5cfb41e-8e49-11ed-bfe3-dac502259ad0.png

也可以在 VirtualBox 的终端上登录系统,默认的登录用户名和密码都是 vagrant

a5ea9af4-8e49-11ed-bfe3-dac502259ad0.png

(5)停止虚拟机

vagranthalt
a5f933b6-8e49-11ed-bfe3-dac502259ad0.png

(6)暂停虚拟机

vagrantsuspend

(7)恢复虚拟机

vagrantresume

注意:不管虚机是关闭还是暂停状态,甚至是 error 状态,都可以执行 vagrant up 来让虚机恢复运行

(8)删除虚拟机

vagrantdestroy

六、Vagrantfilefile源文件

#-*-mode:ruby-*-
#vi:setft=ruby:

#AllVagrantconfigurationisdonebelow.The"2"inVagrant.configure
#configurestheconfigurationversion(wesupportolderstylesfor
#backwardscompatibility).Pleasedon'tchangeitunlessyouknowwhat
#you'redoing.
Vagrant.configure("2")do|config|
#Themostcommonconfigurationoptionsaredocumentedandcommentedbelow.
#Foracompletereference,pleaseseetheonlinedocumentationat
#https://docs.vagrantup.com.

#EveryVagrantdevelopmentenvironmentrequiresabox.Youcansearchfor
#boxesathttps://vagrantcloud.com/search.
config.vm.box="centos8"

#Disableautomaticboxupdatechecking.Ifyoudisablethis,then
#boxeswillonlybecheckedforupdateswhentheuserruns
#`vagrantboxoutdated`.Thisisnotrecommended.
#config.vm.box_check_update=false

#Createaforwardedportmappingwhichallowsaccesstoaspecificport
#withinthemachinefromaportonthehostmachine.Intheexamplebelow,
#accessing"localhost:8080"willaccessport80ontheguestmachine.
#NOTE:Thiswillenablepublicaccesstotheopenedport
#config.vm.network"forwarded_port",guest:80,host:8080

#Createaforwardedportmappingwhichallowsaccesstoaspecificport
#withinthemachinefromaportonthehostmachineandonlyallowaccess
#via127.0.0.1todisablepublicaccess
#config.vm.network"forwarded_port",guest:80,host:8080,host_ip:"127.0.0.1"

#Createaprivatenetwork,whichallowshost-onlyaccesstothemachine
#usingaspecificIP.
#config.vm.network"private_network",ip:"192.168.33.10"

#Createapublicnetwork,whichgenerallymatchedtobridgednetwork.
#Bridgednetworksmakethemachineappearasanotherphysicaldeviceon
#yournetwork.
#config.vm.network"public_network"

#ShareanadditionalfoldertotheguestVM.Thefirstargumentis
#thepathonthehosttotheactualfolder.Thesecondargumentis
#thepathontheguesttomountthefolder.Andtheoptionalthird
#argumentisasetofnon-requiredoptions.
#config.vm.synced_folder"../data","/vagrant_data"

#Provider-specificconfigurationsoyoucanfine-tunevarious
#backingprovidersforVagrant.Theseexposeprovider-specificoptions.
#ExampleforVirtualBox:
#
#config.vm.provider"virtualbox"do|vb|
##DisplaytheVirtualBoxGUIwhenbootingthemachine
#vb.gui=true
#
##CustomizetheamountofmemoryontheVM:
#vb.memory="1024"
#end
#
#Viewthedocumentationfortheprovideryouareusingformore
#informationonavailableoptions.

#Enableprovisioningwithashellscript.Additionalprovisionerssuchas
#Ansible,Chef,Docker,PuppetandSaltarealsoavailable.Pleaseseethe
#documentationformoreinformationabouttheirspecificsyntaxanduse.
#config.vm.provision"shell",inline:<<-SHELL
  #   apt-get update
  #   apt-get install -y apache2
  # SHELL
end

这是一个 Ruby 语法的文件,因为 Vagrant 就是用 Ruby 编写的。如果编辑器没有语法高亮可以手动设置文件类型为 Ruby。

这个缺省文件内容几乎都是注释,提示有哪些配置项可以修改,我们不需要去学 Ruby 编程也可以照葫芦画瓢的完成基本的配置。

除了注释,这个文件的实际生效内容只有3行。

Vagrant.configure("2")do|config|
config.vm.box="centos8"
end

这里的 config.vm.box 对应的就是虚机的镜像,也就是 box 文件,这是唯一必填的配置项。

特别提醒:Vagrantfile 文件名是固定的写法,大小写也要完全一样,修改了就不认识了

七、自定义配置Vagrantfile

1、配置端口转发

端口转发(Port forward)又叫端口映射,就是把虚机的某个端口,映射到宿主机的端口上。这样就能在宿主机上访问到虚拟机中的服务。

例如启动虚机时,默认的 22 (guest) => 2222 (host) (adapter 1) 就是把虚机的 SSH 服务端口(22)映射到宿主机的 2222 端口,这样直接在宿主机通过 ssh 客户端问 127.0.0.1:2222 端口就等价于访问虚拟机的 22 端口。

#Createaforwardedportmappingwhichallowsaccesstoaspecificport
#withinthemachinefromaportonthehostmachine.Intheexamplebelow,
#accessing"localhost:8080"willaccessport80ontheguestmachine.
#NOTE:Thiswillenablepublicaccesstotheopenedport
#config.vm.network"forwarded_port",guest:80,host:8080

#Createaforwardedportmappingwhichallowsaccesstoaspecificport
#withinthemachinefromaportonthehostmachineandonlyallowaccess
#via127.0.0.1todisablepublicaccess
#config.vm.network"forwarded_port",guest:80,host:8080,host_ip:"127.0.0.1"

实际上设置端口转发这个功能并不实用,一个很明显的问题就是如果启动多个虚机,很容易就出现宿主机上端口冲突的问题。即使没有端口冲突,使用起来也不方便,我个人不推荐使用的,可以把这部分配置直接删掉。直接使用下面的私有网络

这个功能是虚拟机软件提供的,可以在虚机的网卡设置中展开高级选项,找到相关的配置:

a614e854-8e49-11ed-bfe3-dac502259ad0.png

还有个地方需要注意,默认的 SSH 端口映射在这里没法直接修改。比如像我这样,2222 端口出现莫名问题,如果想要把 22 端口转发到其它端口如 22222,必须要先强制关闭掉默认的那条规则:

因为不关闭的话,只写第二行,会在原来的基础上新加一个端口转发规则,而不是替代原来的

config.vm.network"forwarded_port",guest:22,host:2222,id:"ssh",disabled:"true"
config.vm.network"forwarded_port",guest:22,host:22222

2、配置私有网络

下面这段配置用来配置私有网络,实际上对应的是 VirtualBox 的主机网络,也就是 HostOnly 网络

#Createaprivatenetwork,whichallowshost-onlyaccesstothemachine
#usingaspecificIP.
#config.vm.network"private_network",ip:"192.168.33.10"

最下面一行取消注释,就可以为虚机设置指定的私有网络地址:

config.vm.network"private_network",ip:"192.168.6.25"

修改完成后,执行 vagrant reload 命令重建虚机,就能看到多出来的网卡了。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux系统
    +关注

    关注

    4

    文章

    558

    浏览量

    26844
  • PHP
    PHP
    +关注

    关注

    0

    文章

    450

    浏览量

    26428
  • 虚拟机
    +关注

    关注

    1

    文章

    841

    浏览量

    27309

原文标题:10分钟快速构建一套自己的虚拟开发环境,Vagrant 堪称效率神器!

文章出处:【微信号:芋道源码,微信公众号:芋道源码】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    win10 虚拟机 无法识别USB(命令行-r 出错)

    电脑 win10虚拟机: VMware Workstation Pro想用 虚拟机 搞串口发现无法识别u*** servil ch340USB 移动硬盘也无法识别网上找了些方法发现
    发表于 10-17 19:52

    使用规则Powercfg命令行使用的语法有哪些

    /测试和诊断/Powercfg命令行选项组件,使用 powercfg.exe 来控制电源计划(也称为电源方案),以使用可用的睡眠状态、控制单个设备的电源状态,以及分析系统中常见的能效和电池寿命问题。使用规则Powercfg 命令行使用以下语法:powercfg /opti
    发表于 01-03 07:15

    编译buileroot固件,在uboot命令行ping不通虚拟机无法使用tftp和nfs怎么解决?

    编译buileroot固件,在uboot命令行ping不通虚拟机无法使用tftp和nfs怎么解决?
    发表于 03-07 07:22

    caxa命令行中的应用

    caxa命令行中的应用 命令行对于大多用户来说往往只是输入数据的作用,但是其中的奥妙还有很多,下面就给大家
    发表于 10-18 18:18 2153次阅读

    三层工业以太网交换机命令行使用指南v1.0

    三层工业以太网交换机命令行使用指南v1.0
    发表于 12-16 12:51 0次下载

    实用 Linux 命令行使用技巧集锦

    下面介绍的都是一些命令行工具,这些工具在日常工作中都很有用。
    的头像 发表于 03-21 14:42 4461次阅读

    Linux图形界面的原理与构成和Linux命令行和vi编辑器的使用手册

    本文档的主要内容详细介绍的是Linux基础教案主要内容是:(1) 了解Linux图形界面的原理与构成;(2)掌握Linux命令行操作,包括:命令行界面、Shell基础、命令行使用;(3
    发表于 10-16 14:49 6次下载
    Linux图形界面的原理与构成和Linux<b class='flag-5'>命令行</b>和vi编辑器的使用手册

    Xilinx软件命令行工具:XSCT开发和调试

    了解如何使用XSCT,Xilinx软件命令行工具进行开发和调试。 该视频演示了XSCT如何充当Xilinx SDK的命令行控制台。
    的头像 发表于 11-21 06:02 1.3w次阅读

    VirtualBox 的命令行用法

    作为一款功能强大的开源虚拟机软件,VirtualBox 不仅提供有图形化的用户界面,而且也包含命令行界面。VirtualBox 的
    发表于 04-02 14:36 1199次阅读

    Linux下播放器开发-Mplayer命令行使介绍

    前面文章介绍了Linux下Mplayer播放的交叉编译、移植,在命令行上成功运行了mplayer播放器,完成了视频播放。mplayer支持二次开发,也支持命令行上直接使用;如果在命令行
    的头像 发表于 08-14 09:10 5899次阅读

    linux虚拟机怎么调出命令行

    在Linux虚拟机中调出命令行界面,可以通过以下步骤实现: 打开虚拟机,进入到Linux系统。 在桌面或应用菜单中找到终端或命令行图标,点击打开。 输入
    的头像 发表于 11-08 11:28 1302次阅读

    linux切换到命令行模式

    在Linux中,可以通过以下步骤切换到命令行模式: 打开终端。可以在应用菜单中找到终端或命令行终端。 在终端中输入命令“exit”或“logout”,然后按回车键。 系统会提示您输入管理
    的头像 发表于 11-13 16:47 660次阅读

    linux虚拟机怎么调出命令行

    命令行的方式可以因不同的虚拟机软件而异,下面将介绍几种常用的虚拟机软件以及它们调出
    的头像 发表于 11-17 09:55 1631次阅读

    linux虚拟机命令行界面如何操作

    Linux虚拟机命令行界面可以分为四个方面进行详尽的说明:登录、基本操作、文件管理和系统管理。 第一部分:登录 首先,您需要启动虚拟机并打
    的头像 发表于 11-17 09:57 837次阅读

    idea如何输入命令行参数

    在许多软件开发和系统管理的任务中,我们经常需要向应用程序传递命令行参数。命令行参数是在运行时传递给程序的值,用于指定程序的行为和配置选项。本
    的头像 发表于 12-06 15:01 295次阅读