0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹一款用于管理虛擬機(jī)的命令行使用軟件Vagrant

jf_ro2CN3Fa ? 來源:CSDN ? 2023-01-09 10:27 ? 次閱讀

一、vagrant介紹

是一款用于管理虛擬機(jī)的命令行使用軟件,用Ruby語言開發(fā)而成。換言說,可以省去你使用虛擬機(jī)創(chuàng)建操作系統(tǒng)的所有操作,比如創(chuàng)建虛擬機(jī),掛在鏡像文件,一步步點(diǎn)擊安裝等等,使用vagrant,這些都不需要做了,簡(jiǎn)簡(jiǎn)單單兩行命令,快速創(chuàng)建屬于你個(gè)人的系統(tǒng)。

在開發(fā)方面,Vagrant 是一款用來構(gòu)建虛擬開發(fā)環(huán)境的工具,非常適合 php/python/ruby/java 這類語言開發(fā) web 應(yīng)用。我們可以通過 Vagrant 封裝一個(gè) Linux 的開發(fā)環(huán)境,分發(fā)給團(tuán)隊(duì)成員。成員可以在自己喜歡的桌面系統(tǒng)(Mac/Windows/Linux)上開發(fā)程序,代碼卻能統(tǒng)一在封裝好的環(huán)境里運(yùn)行,非常霸氣。

基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

二、安裝用到的軟件

1、安裝virtualBox (此處不再講解安裝)

雖然 Vagrant 也支持 VMware,不過 VMware 是收費(fèi)的,對(duì)應(yīng)的 Vagrant 版本也是收費(fèi)的

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

2、安裝Vagrant

(1)進(jìn)入官網(wǎng)https://www.vagrantup.com/downloads,選擇版本下載

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

(2)傻瓜式安裝

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

(3)檢測(cè)是否安裝成功

命令行輸入vagrant,如下圖顯示,說明安裝成功。

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

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

三、下載系統(tǒng)鏡像。

在vagrant官網(wǎng)中,有一個(gè)findbox的按鈕,這個(gè)是vagrant的鏡像庫,里邊列出了都要哪些鏡像可以用,并且提供了操作文檔。

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

但是這里默認(rèn)下載往往會(huì)比較慢,所以下面我會(huì)介紹如何在其它地方下載到基礎(chǔ)鏡像,然后按照自己的需要重置。如果網(wǎng)速較好,下載順利的朋友可以選擇性地跳過部分內(nèi)容。

下面我給出最常用的兩個(gè) Linux 操作系統(tǒng)鏡像的下載地址:

CentOS

在其中選擇自己想要下載的版本,列表中有一個(gè) vagrant 目錄,里面是專門為 vagrant 構(gòu)建的鏡像。選擇其中的 .box 后綴的文件下載即可。這里可以使用下載工具,以較快的速度下載下來。

Ubuntu

同樣先選擇想要的版本,然后選擇針對(duì) vagrant 的 .box 文件即可。

如果這里官網(wǎng)的速度較慢,還可以從 清華大學(xué)的鏡像站 下載。

例如:

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

四、查詢、添加、刪除box

接下來我們需要將下載后的 .box 文件添加到 vagrant 中。Vagrant 沒有 GUI,只能從命令行訪問。

(1)查詢vagrant 已經(jīng)管理的 Box 有哪些:

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

(2)添加box命令

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

vagrant box add 將 box 添加到vagrant 中,命令后面跟著的是box文件路徑

--name centos8 可以為這個(gè) box 指定一個(gè)名字

安裝好以后如下圖,可以在用查詢命令查詢一下,可看到安裝好的box。

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

(3)刪除box命令

vagrantboxremoveNAME#根據(jù)名字刪除指定的box
a54f2cea-8e49-11ed-bfe3-dac502259ad0.png

五、vagrant基本操作

(1)新建虛擬機(jī)

我們?cè)趧?chuàng)建虛擬機(jī)的時(shí)候,會(huì)生產(chǎn)一些文件,所以我們?yōu)槊總€(gè)虛擬機(jī)最好都創(chuàng)建一個(gè)獨(dú)立的文件夾。然后進(jìn)入文件夾中。在文件夾路徑下初始化

vagrantinit[boxname]#加上boxname表示使用哪個(gè)box創(chuàng)建虛擬機(jī)
a56c5ffe-8e49-11ed-bfe3-dac502259ad0.png

初始化后,會(huì)在文件夾下生成一個(gè)配置文件

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

(2) 啟動(dòng)虛擬機(jī)

所有的 vagrant 命令都需要在 Vagrantfile 所在的目錄下執(zhí)行:

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

如果沒有報(bào)錯(cuò),說明啟動(dòng)成功。(注意box的名字,寫錯(cuò)了會(huì)報(bào)錯(cuò))

(3)查看虛擬機(jī)狀態(tài)

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

如果是running 就說明我們的虛擬機(jī),啟動(dòng)成功了

(4)鏈接虛擬機(jī)

如果啟動(dòng)沒問題,此時(shí)在vbox的列表中自動(dòng)生成一個(gè)虛擬機(jī),這個(gè)虛擬機(jī)以文件夾名字命名,可以看到自動(dòng)創(chuàng)建的虛機(jī):

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

執(zhí)行 vagrant ssh 就能以 vagrant 用戶直接登入虛機(jī)中。

root 用戶沒有默認(rèn)密碼,也不能直接登錄。需要 root 權(quán)限的命令可以通過在命令前添加 sudo 來執(zhí)行,也可以執(zhí)行 sudo -i 直接切換到 root 用戶。

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

也可以在 VirtualBox 的終端上登錄系統(tǒng),默認(rèn)的登錄用戶名和密碼都是 vagrant

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

(5)停止虛擬機(jī)

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

(6)暫停虛擬機(jī)

vagrantsuspend

(7)恢復(fù)虛擬機(jī)

vagrantresume

注意:不管虛機(jī)是關(guān)閉還是暫停狀態(tài),甚至是 error 狀態(tài),都可以執(zhí)行 vagrant up 來讓虛機(jī)恢復(fù)運(yùn)行

(8)刪除虛擬機(jī)

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

這是一個(gè) Ruby 語法的文件,因?yàn)?Vagrant 就是用 Ruby 編寫的。如果編輯器沒有語法高亮可以手動(dòng)設(shè)置文件類型為 Ruby。

這個(gè)缺省文件內(nèi)容幾乎都是注釋,提示有哪些配置項(xiàng)可以修改,我們不需要去學(xué) Ruby 編程也可以照葫蘆畫瓢的完成基本的配置。

除了注釋,這個(gè)文件的實(shí)際生效內(nèi)容只有3行。

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

這里的 config.vm.box 對(duì)應(yīng)的就是虛機(jī)的鏡像,也就是 box 文件,這是唯一必填的配置項(xiàng)。

特別提醒:Vagrantfile 文件名是固定的寫法,大小寫也要完全一樣,修改了就不認(rèn)識(shí)了

七、自定義配置Vagrantfile

1、配置端口轉(zhuǎn)發(fā)

端口轉(zhuǎn)發(fā)(Port forward)又叫端口映射,就是把虛機(jī)的某個(gè)端口,映射到宿主機(jī)的端口上。這樣就能在宿主機(jī)上訪問到虛擬機(jī)中的服務(wù)。

例如啟動(dòng)虛機(jī)時(shí),默認(rèn)的 22 (guest) => 2222 (host) (adapter 1) 就是把虛機(jī)的 SSH 服務(wù)端口(22)映射到宿主機(jī)的 2222 端口,這樣直接在宿主機(jī)通過 ssh 客戶端問 127.0.0.1:2222 端口就等價(jià)于訪問虛擬機(jī)的 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"

實(shí)際上設(shè)置端口轉(zhuǎn)發(fā)這個(gè)功能并不實(shí)用,一個(gè)很明顯的問題就是如果啟動(dòng)多個(gè)虛機(jī),很容易就出現(xiàn)宿主機(jī)上端口沖突的問題。即使沒有端口沖突,使用起來也不方便,我個(gè)人不推薦使用的,可以把這部分配置直接刪掉。直接使用下面的私有網(wǎng)絡(luò)。

這個(gè)功能是虛擬機(jī)軟件提供的,可以在虛機(jī)的網(wǎng)卡設(shè)置中展開高級(jí)選項(xiàng),找到相關(guān)的配置:

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

還有個(gè)地方需要注意,默認(rèn)的 SSH 端口映射在這里沒法直接修改。比如像我這樣,2222 端口出現(xiàn)莫名問題,如果想要把 22 端口轉(zhuǎn)發(fā)到其它端口如 22222,必須要先強(qiáng)制關(guān)閉掉默認(rèn)的那條規(guī)則:

因?yàn)椴魂P(guān)閉的話,只寫第二行,會(huì)在原來的基礎(chǔ)上新加一個(gè)端口轉(zhuǎn)發(fā)規(guī)則,而不是替代原來的

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

2、配置私有網(wǎng)絡(luò)

下面這段配置用來配置私有網(wǎng)絡(luò),實(shí)際上對(duì)應(yīng)的是 VirtualBox 的主機(jī)網(wǎng)絡(luò),也就是 HostOnly 網(wǎng)絡(luò)

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

最下面一行取消注釋,就可以為虛機(jī)設(shè)置指定的私有網(wǎng)絡(luò)地址:

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

修改完成后,執(zhí)行 vagrant reload 命令重建虛機(jī),就能看到多出來的網(wǎng)卡了。







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    587

    瀏覽量

    27181
  • PHP
    PHP
    +關(guān)注

    關(guān)注

    0

    文章

    452

    瀏覽量

    26576
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    888

    瀏覽量

    27812

原文標(biāo)題:10分鐘快速構(gòu)建一套自己的虛擬開發(fā)環(huán)境,Vagrant 堪稱效率神器!

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    win10 虛擬機(jī) 無法識(shí)別USB(命令行-r 出錯(cuò))

    電腦 win10虛擬機(jī): VMware Workstation Pro想用 虛擬機(jī) 搞串口發(fā)現(xiàn)無法識(shí)別u*** servil ch340USB 移動(dòng)硬盤也無法識(shí)別網(wǎng)上找了些方法發(fā)現(xiàn)
    發(fā)表于 10-17 19:52

    使用規(guī)則Powercfg命令行使用的語法有哪些

    /測(cè)試和診斷/Powercfg命令行選項(xiàng)組件,使用 powercfg.exe 來控制電源計(jì)劃(也稱為電源方案),以使用可用的睡眠狀態(tài)、控制單個(gè)設(shè)備的電源狀態(tài),以及分析系統(tǒng)中常見的能效和電池壽命問題。使用規(guī)則Powercfg 命令行使用以下語法:powercfg /opti
    發(fā)表于 01-03 07:15

    編譯buileroot固件,在uboot命令行ping不通虛擬機(jī)無法使用tftp和nfs怎么解決?

    編譯buileroot固件,在uboot命令行ping不通虛擬機(jī)無法使用tftp和nfs怎么解決?
    發(fā)表于 03-07 07:22

    三層工業(yè)以太網(wǎng)交換機(jī)命令行使用指南v1.0

    三層工業(yè)以太網(wǎng)交換機(jī)命令行使用指南v1.0
    發(fā)表于 12-16 12:51 ?0次下載

    linux 命令行使用技巧

    我們每天使用許多Linux命令行。我們從網(wǎng)上知道些技巧,但如果我們不去練習(xí),我們就有可能忘記。我決定做個(gè)關(guān)于技巧和竅門的列表,這些技巧和竅門對(duì)于你來說可能是已經(jīng)忘記的,或者可能是全新的。 輸出
    發(fā)表于 09-28 15:54 ?0次下載
    linux <b class='flag-5'>命令行使</b>用技巧

    實(shí)用 Linux 命令行使用技巧集錦

    下面介紹的都是命令行工具,這些工具在日常工作中都很有用。
    的頭像 發(fā)表于 03-21 14:42 ?4637次閱讀

    主機(jī)windows+ubuntu虛擬機(jī)聯(lián)網(wǎng)傳輸實(shí)例

    主機(jī)windows+ubuntu虛擬機(jī) 文件傳輸用 主機(jī)與虛擬機(jī)傳輸文件告別命令行
    的頭像 發(fā)表于 07-27 16:12 ?3767次閱讀
    主機(jī)windows+ubuntu<b class='flag-5'>虛擬機(jī)</b>聯(lián)網(wǎng)傳輸實(shí)例

    Xilinx軟件命令行工具:XSCT開發(fā)和調(diào)試

    了解如何使用XSCT,Xilinx軟件命令行工具進(jìn)行開發(fā)和調(diào)試。 該視頻演示了XSCT如何充當(dāng)Xilinx SDK的命令行控制臺(tái)。
    的頭像 發(fā)表于 11-21 06:02 ?1.4w次閱讀

    Xilinx軟件命令行工具進(jìn)行開發(fā)和調(diào)試

    了解如何使用XSCT,Xilinx軟件命令行工具進(jìn)行開發(fā)和調(diào)試。 該視頻演示了XSCT如何充當(dāng)Xilinx SDK的命令行控制臺(tái)。
    的頭像 發(fā)表于 11-22 06:53 ?6465次閱讀

    VirtualBox 的命令行用法

    作為一款功能強(qiáng)大的開源虛擬機(jī)軟件,VirtualBox 不僅提供有圖形化的用戶界面,而且也包含命令行界面。VirtualBox 的
    發(fā)表于 04-02 14:36 ?1329次閱讀

    Linux下播放器開發(fā)-Mplayer命令行使介紹

    前面文章介紹了Linux下Mplayer播放的交叉編譯、移植,在命令行上成功運(yùn)行了mplayer播放器,完成了視頻播放。mplayer支持二次開發(fā),也支持命令行上直接使用;如果在命令行
    的頭像 發(fā)表于 08-14 09:10 ?6575次閱讀

    linux虛擬機(jī)怎么調(diào)出命令行

    在Linux虛擬機(jī)中調(diào)出命令行界面,可以通過以下步驟實(shí)現(xiàn): 打開虛擬機(jī),進(jìn)入到Linux系統(tǒng)。 在桌面或應(yīng)用菜單中找到終端或命令行圖標(biāo),點(diǎn)擊打開。 輸入
    的頭像 發(fā)表于 11-08 11:28 ?2510次閱讀

    linux虛擬機(jī)怎么調(diào)出命令行

    命令行的方式可以因不同的虛擬機(jī)軟件而異,下面將介紹幾種常用的虛擬機(jī)軟件以及它們調(diào)出
    的頭像 發(fā)表于 11-17 09:55 ?3177次閱讀

    linux虛擬機(jī)命令行界面如何操作

    Linux虛擬機(jī)命令行界面可以分為四個(gè)方面進(jìn)行詳盡的說明:登錄、基本操作、文件管理和系統(tǒng)管理。 第部分:登錄 首先,您需要啟動(dòng)
    的頭像 發(fā)表于 11-17 09:57 ?1436次閱讀

    idea如何輸入命令行參數(shù)

    在許多軟件開發(fā)和系統(tǒng)管理的任務(wù)中,我們經(jīng)常需要向應(yīng)用程序傳遞命令行參數(shù)。命令行參數(shù)是在運(yùn)行時(shí)傳遞給程序的值,用于指定程序的行為和配置選項(xiàng)。本
    的頭像 發(fā)表于 12-06 15:01 ?822次閱讀