一、vagrant介紹
是一款用于管理虛擬機(jī)的命令行使用軟件,用Ruby語(yǔ)言開(kāi)發(fā)而成。換言說(shuō),可以省去你使用虛擬機(jī)創(chuàng)建操作系統(tǒng)的所有操作,比如創(chuàng)建虛擬機(jī),掛在鏡像文件,一步步點(diǎn)擊安裝等等,使用vagrant,這些都不需要做了,簡(jiǎn)簡(jiǎn)單單兩行命令,快速創(chuàng)建屬于你個(gè)人的系統(tǒng)。
在開(kāi)發(fā)方面,Vagrant 是一款用來(lái)構(gòu)建虛擬開(kāi)發(fā)環(huán)境的工具,非常適合 php/python/ruby/java 這類(lèi)語(yǔ)言開(kāi)發(fā) web 應(yīng)用。我們可以通過(guò) Vagrant 封裝一個(gè) Linux 的開(kāi)發(fā)環(huán)境,分發(fā)給團(tuán)隊(duì)成員。成員可以在自己喜歡的桌面系統(tǒng)(Mac/Windows/Linux)上開(kāi)發(fā)程序,代碼卻能統(tǒng)一在封裝好的環(huán)境里運(yùn)行,非常霸氣。
基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶(hù)小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶(hù)、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
二、安裝用到的軟件
1、安裝virtualBox (此處不再講解安裝)
雖然 Vagrant 也支持 VMware,不過(guò) VMware 是收費(fèi)的,對(duì)應(yīng)的 Vagrant 版本也是收費(fèi)的

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

(2)傻瓜式安裝

(3)檢測(cè)是否安裝成功
命令行輸入vagrant,如下圖顯示,說(shuō)明安裝成功。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶(hù)小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶(hù)、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
三、下載系統(tǒng)鏡像。
在vagrant官網(wǎng)中,有一個(gè)findbox的按鈕,這個(gè)是vagrant的鏡像庫(kù),里邊列出了都要哪些鏡像可以用,并且提供了操作文檔。

但是這里默認(rèn)下載往往會(huì)比較慢,所以下面我會(huì)介紹如何在其它地方下載到基礎(chǔ)鏡像,然后按照自己的需要重置。如果網(wǎng)速較好,下載順利的朋友可以選擇性地跳過(guò)部分內(nèi)容。
下面我給出最常用的兩個(gè) Linux 操作系統(tǒng)鏡像的下載地址:
CentOS
在其中選擇自己想要下載的版本,列表中有一個(gè) vagrant 目錄,里面是專(zhuān)門(mén)為 vagrant 構(gòu)建的鏡像。選擇其中的 .box 后綴的文件下載即可。這里可以使用下載工具,以較快的速度下載下來(lái)。
Ubuntu
同樣先選擇想要的版本,然后選擇針對(duì) vagrant 的 .box 文件即可。
如果這里官網(wǎng)的速度較慢,還可以從 清華大學(xué)的鏡像站 下載。
例如:

四、查詢(xún)、添加、刪除box
接下來(lái)我們需要將下載后的 .box 文件添加到 vagrant 中。Vagrant 沒(méi)有 GUI,只能從命令行訪問(wèn)。
(1)查詢(xún)vagrant 已經(jīng)管理的 Box 有哪些:
vagrantboxlist

(2)添加box命令
vagrantboxaddbox的文件路徑及文件名--namecentos8
vagrant box add 將 box 添加到vagrant 中,命令后面跟著的是box文件路徑
--name centos8 可以為這個(gè) box 指定一個(gè)名字
安裝好以后如下圖,可以在用查詢(xún)命令查詢(xún)一下,可看到安裝好的box。

(3)刪除box命令
vagrantboxremoveNAME#根據(jù)名字刪除指定的box

五、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ī)

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

(2) 啟動(dòng)虛擬機(jī)
所有的 vagrant 命令都需要在 Vagrantfile 所在的目錄下執(zhí)行:
vagrantup

如果沒(méi)有報(bào)錯(cuò),說(shuō)明啟動(dòng)成功。(注意box的名字,寫(xiě)錯(cuò)了會(huì)報(bào)錯(cuò))
(3)查看虛擬機(jī)狀態(tài)
vagrantstatus

如果是running 就說(shuō)明我們的虛擬機(jī),啟動(dòng)成功了
(4)鏈接虛擬機(jī)
如果啟動(dòng)沒(méi)問(wèn)題,此時(shí)在vbox的列表中自動(dòng)生成一個(gè)虛擬機(jī),這個(gè)虛擬機(jī)以文件夾名字命名,可以看到自動(dòng)創(chuàng)建的虛機(jī):

執(zhí)行 vagrant ssh 就能以 vagrant 用戶(hù)直接登入虛機(jī)中。
root 用戶(hù)沒(méi)有默認(rèn)密碼,也不能直接登錄。需要 root 權(quán)限的命令可以通過(guò)在命令前添加 sudo 來(lái)執(zhí)行,也可以執(zhí)行 sudo -i 直接切換到 root 用戶(hù)。

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

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

(6)暫停虛擬機(jī)
vagrantsuspend
(7)恢復(fù)虛擬機(jī)
vagrantresume
注意:不管虛機(jī)是關(guān)閉還是暫停狀態(tài),甚至是 error 狀態(tài),都可以執(zhí)行 vagrant up 來(lái)讓虛機(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ǔ)法的文件,因?yàn)?Vagrant 就是用 Ruby 編寫(xiě)的。如果編輯器沒(méi)有語(yǔ)法高亮可以手動(dòng)設(shè)置文件類(lèi)型為 Ruby。
這個(gè)缺省文件內(nèi)容幾乎都是注釋?zhuān)崾居心男┡渲庙?xiàng)可以修改,我們不需要去學(xué) Ruby 編程也可以照葫蘆畫(huà)瓢的完成基本的配置。
除了注釋?zhuān)@個(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 文件名是固定的寫(xiě)法,大小寫(xiě)也要完全一樣,修改了就不認(rèn)識(shí)了
七、自定義配置Vagrantfile
1、配置端口轉(zhuǎn)發(fā)
端口轉(zhuǎn)發(fā)(Port forward)又叫端口映射,就是把虛機(jī)的某個(gè)端口,映射到宿主機(jī)的端口上。這樣就能在宿主機(jī)上訪問(wèn)到虛擬機(jī)中的服務(wù)。
例如啟動(dòng)虛機(jī)時(shí),默認(rèn)的 22 (guest) => 2222 (host) (adapter 1) 就是把虛機(jī)的 SSH 服務(wù)端口(22)映射到宿主機(jī)的 2222 端口,這樣直接在宿主機(jī)通過(guò) ssh 客戶(hù)端問(wèn) 127.0.0.1:2222 端口就等價(jià)于訪問(wèn)虛擬機(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è)很明顯的問(wèn)題就是如果啟動(dòng)多個(gè)虛機(jī),很容易就出現(xiàn)宿主機(jī)上端口沖突的問(wèn)題。即使沒(méi)有端口沖突,使用起來(lái)也不方便,我個(gè)人不推薦使用的,可以把這部分配置直接刪掉。直接使用下面的私有網(wǎng)絡(luò)。
這個(gè)功能是虛擬機(jī)軟件提供的,可以在虛機(jī)的網(wǎng)卡設(shè)置中展開(kāi)高級(jí)選項(xiàng),找到相關(guān)的配置:

還有個(gè)地方需要注意,默認(rèn)的 SSH 端口映射在這里沒(méi)法直接修改。比如像我這樣,2222 端口出現(xiàn)莫名問(wèn)題,如果想要把 22 端口轉(zhuǎn)發(fā)到其它端口如 22222,必須要先強(qiáng)制關(guān)閉掉默認(rèn)的那條規(guī)則:
因?yàn)椴魂P(guān)閉的話,只寫(xiě)第二行,會(huì)在原來(lái)的基礎(chǔ)上新加一個(gè)端口轉(zhuǎn)發(fā)規(guī)則,而不是替代原來(lái)的
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ò)
下面這段配置用來(lái)配置私有網(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"
最下面一行取消注釋?zhuān)涂梢詾樘摍C(jī)設(shè)置指定的私有網(wǎng)絡(luò)地址:
config.vm.network"private_network",ip:"192.168.6.25"
修改完成后,執(zhí)行 vagrant reload 命令重建虛機(jī),就能看到多出來(lái)的網(wǎng)卡了。
審核編輯:劉清
-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
609瀏覽量
29620 -
PHP
+關(guān)注
關(guān)注
0文章
460瀏覽量
28370 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
968瀏覽量
30152
原文標(biāo)題:10分鐘快速構(gòu)建一套自己的虛擬開(kāi)發(fā)環(huán)境,Vagrant 堪稱(chēng)效率神器!
文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
win10 虛擬機(jī) 無(wú)法識(shí)別USB(命令行-r 出錯(cuò))
使用規(guī)則Powercfg命令行使用的語(yǔ)法有哪些
編譯buileroot固件,在uboot命令行ping不通虛擬機(jī)無(wú)法使用tftp和nfs怎么解決?
linux 命令行使用技巧
主機(jī)windows+ubuntu虛擬機(jī)聯(lián)網(wǎng)傳輸實(shí)例

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