網管小賈 / sysadm.cc
随着電腦性能的飛速提升,虛拟機軟件也早已成為了我們平日生産測試系統經常用到的高頻軟件。
但是除了虛拟機環境的搭建之外,虛拟客戶機的創建和配置的複雜性和繁瑣性也是一直以來打擊着萌新們的幼小心靈。
畢竟熟練掌握客戶機的創建和配置是需要投入時間和精力學習的,而我們又可能沒有太多的時間去搞定各種各樣的不同場景,有沒有可以快速創建客戶機、快速展開我們所希望的測試工作呢?
世上無難事,隻怕有心人,你别說,還真有!
不知道小夥伴們還記不記得以前我給大家分享的一篇關于 Quickemu 的文章,就是介紹快速獲取虛拟機鏡像,并且快速創建虛拟機系統的這麼一個解決方案。
不過嘛,Quickemu 是建立在 KVM 之上的,那必須是圍着 Linux 系統轉啊!
而且好像 Qemu 還要 6.0 版本以上,需要手動編譯安裝,這 KVM 環境搭建就夠費時費力了,蔭新們肯定直呼做不到啊!
嘿嘿,别着急!
Linux 不行,那我們到 Windows 上想想辦法,有可能嗎?
當然有可能了,要不我在這兒廢什麼話呢,哈哈!
今天要給大家介紹的,就是名為 Multipass 的一款輕量型虛拟機管理器。
官網:https://multipass.run/
這個 Multipass 有什麼特點?
你瞧它的頭銜,我們把修飾的定語給它拿掉,就剩下“虛拟機管理器”這幾個字。
哈,瞬間明白了,它其實隻是個管理器,并不是虛拟軟件,其本質上和 Quickemu 差不多。
但是它比 Quickemu 有更多好處,它可以在 Linux 、 Windows 和 macOS 多個平台上跑。
哎,小夥伴們一看有 Windows ,嘿嘿,這下有門了!
沒錯哈,需要進一步說明的是,它在不同平台上跑的時候啊,它管理的虛拟軟件還不一樣。
剛才說了嘛,它是個管理器,并不是虛拟軟件本身。
那它在不同平台上都是怎麼管的呢?
很簡單,在 Linux 上它管 KVM ,在 Windows 上它管 Hyper-V 和 VirtualBox ,還有在 macOS 上它管 HyperKit 。
管得還真不少,但仔細一看你也能明白,在哪個不同平台就管理哪個不同的虛拟軟件,都是與平台相對應的。
那麼我們就很清楚了,隻要我們在 Windows 上安裝有 Hyper-V 或 VirtualBox ,再通過 Multipass 來管理它們就可以達到我們快速創建和管理虛拟機的目的了。
然而 Hyper-V 對于蔭新們并不常用,複雜度較高,體積也很龐大,似乎可能還要購買 License 。
而相對之下,VirtualBox 就比較親民一些,免費開源,安裝使用起來也很方便,因此接下來我們就以 VirtualBox 為例,為大家介紹 Multipass 的簡單用法,以此我們可以類推到其他系統平台上。
準備工作假定我們已經擁有了一台 Windows 10 系統,上面已經安裝好了 VirtualBox 。
我們到官網将 Windows 版的 Multipass 下載下來。
下載鍊接:https://multipass.run/download/windows
安裝 Multipass
下載完成之後我們就可以開始安裝 Multipass 了。
接受許可,繼續。
選擇虛拟引擎,這裡有兩個選擇,前面我們說過了,在這兒選擇 Oracle VM VirtualBox 。
選擇将 Multipass 加到哪個路徑環境變量 PATH 中,這樣做的好處就是你可以在任意路徑下調用 Multipass 命令。
在這兒我們選擇針對所有用戶都有效。
指定安裝目錄,默認就可以了。
選擇需要安裝的組件,應該都選上,反正也占不了多大地方哈。
第一項是 Multipass 的命令行及圖形程序,第二項是通知欄圖标菜單,第三項是後台服務。
安裝程序開始解壓縮并拷貝文件。
如果你還沒有安裝 VirtualBox ,那麼它會檢查并提示我們。
最後完成安裝,Windows 下安裝非常的簡單啊!
使用 Multipass
打開 Multipass ,我們可以在系統通知欄内看到它的圖标。
用鼠标右鍵點擊圖标,在彈出的菜單中隻有寥寥幾個選項。
我們先看看關于 About 一項,能看到 Multipass 的版本,以及可以設定是否跟随系統啟動而自動登錄。
這裡簡單解釋一下 multipass 和 multipassd 的區别。
後面多了一個 d 是指 daemon ,意思是後台服務,當我們需要它以後台服務的形式運行在系統中時就會用到 multipassd 了。
接下來我們嘗試簡單地運用一下 Multipass 來加深對它的理解。
右鍵點擊圖标,選擇 Open Shell 。
之後會打開一個 PowerShell 窗口,我們就可以在這個窗口中執行 multipass 命令了。
不過有時也可能會出現如下圖那樣的提示,詢問用戶是否可以發送匿名數據來幫助 Multipass 開發者。
說實話,我等小白還是不要摻和大神們的事了吧,我選擇直接關閉了窗口,哈哈!
對于我來說,比較通常的做法就是自己打開一個 PowerShell 窗口。
由于之前我們已經将 multipass 命令放到了環境變量 PATH 中了,因此打開 PowerShell 後就可以直接輸入命令執行。
我們嘗試輸出當前 Multipass 的版本号。
multipass version
直接輸入 multipass 并且不帶任何參數可以查看命令幫助信息。
multipass -?, -h, --help
我們在前面曾說過,Multipass 是個管理器,它可以提供快速部署虛拟機的鏡像,那我們來看看它都有哪些可用的鏡像吧。
輸入以下命令,查看當前提供的鏡像列表。
multipass find
輸出結果:
Image Aliases Version Description core core16 20200818 Ubuntu Core 16 core18 20211124 Ubuntu Core 18 18.04 bionic 20220104 Ubuntu 18.04 LTS 20.04 focal,lts 20220111 Ubuntu 20.04 LTS 21.04 hirsute 20220106 Ubuntu 21.04 21.10 impish 20220111 Ubuntu 21.10 appliance:adguard-home 20200812 Ubuntu AdGuard Home Appliance appliance:mosquitto 20200812 Ubuntu Mosquitto Appliance appliance:nextcloud 20200812 Ubuntu Nextcloud Appliance appliance:openhab 20200812 Ubuntu openHAB Home Appliance appliance:plexmediaserver 20200812 Ubuntu Plex Media Server Appliance anbox-cloud-appliance latest Anbox Cloud Appliance minikube latest minikube is local Kubernetes
可以看到,Multipass 提供的都是 Ubuntu 現成的各種版本鏡像,因此它能夠在數分鐘之内快速完成下載并将其實例化。
如果不刻意指定具體哪個版本鏡像的話,默認情況下 Multipass 将獲取當前最新的 LTS 版本鏡像。
關于鏡像 image 和實例 instance 的區分,我簡單地科普下哈!
我們可以簡單地理解為,鏡像是一種模闆,作為參照物用來生成實例,模闆的内容固定我們不能修改變動它。
而實例則是我們實際操作的對象,它以鏡像為模闆生成實例,一個或多個實例由一個鏡像生成,然後我們對實例進行修改操作。
實際上如果小夥伴們學過 Docker 的話,那麼對于這些概念甚至是接下來的命令操作可以說是一點也不陌生,簡直是一模一樣啊!
好了,我們接着看,查看當前我們擁有的實例。
multipass list
我們還沒有下載鏡像,自然還沒有任何實例存在,别着急,一會兒我們就下載一個試試。
最簡單的,我們就用默認的鏡像來做實驗吧,隻要給個實例名稱就可以了。
multipass launch --name <實例名稱>
比如,輸出一個名為 sysadm 的實例。
multipass launch --name sysadm
除了名字,我們沒有加任何參數,因此它會默認使用 LTS 版本鏡像。
如果鏡像還未下載,那麼 launch 命令會先下載鏡像,爾後啟動運行實例。
如果鏡像已經下載過了,那麼 launch 命令就直接啟動實例。
鏡像一旦下載完成,Multipass 就會按鏡像生成實例,接着便會啟動這個實例。
在此期間有可能我們會遇到一些小問題。
比如,它會提示沒有開啟 Hyper-V 功能。
這是什麼鬼,說好的 VirtualBox ,為啥會提示 Hyper-V 呢?
理由是我們還需要手動指定一下,讓 Multipass 去找 VirtualBox 而不是 Hyper-V 。
喵了個咪,明明安裝的時候說好的呀,真是有夠笨的啊!
好吧,那我們就指定一下吧。
multipass set local.driver-virtualbox
如此一來,我們就可以安心讓 Multipass 啟動 VirtualBox 了。
不過即使如此,也有可能再次冒出來個不省心的問題。
就像下面這樣,似乎是虛拟化功能未開啟,記得要在 BIOS 裡開啟虛拟化功能哦!
好了,前面 launch 命令已經将鏡像下載下來并成功啟動了實例,那我們就可以來看看它的狀态。
multipass list
這次終于看到了,鏡像是 Ubuntu 20.04 LTS ,實例名是 sysadm ,當前正在運行中。
想要查看實例的相關信息,可以用 info 參數加上實例名稱。
multipass info <實例名稱>
比如,查看實例名為 sysadm 的信息。
multipass info sysadm
執行實例内部命令,使用 exec 參數。
# 執行不帶參數的命令 multipass exec <實例名稱> <command> 例:multipass exec vm01 pwd # 執行帶參數的命令 multipass exec <實例名稱> -- <command> <arguments> 例:multipass exec vm01 -- uname -a
關于 launch 參數實際上還有更具體的用法,大概有以下幾種附加選項參數 [options] 可以用來指定虛拟機配置。
multipass launch [options] -n, --name: 名稱 -c, --cpus: cpu核心數, 默認: 1 -m, --mem: 内存大小, 默認: 1G -d, --disk: 硬盤大小, 默認: 5G
那麼命令大概可以這樣寫。
multipass launch --name <實例名稱> --cpus 1 --mem 1G --disk 10G
參數簡寫也可以是這樣。
multipass launch -n <實例名稱> -c 1 -m 1G -d 10G
另外如果我們想指定鏡像,那麼可以在後面加上 <image> 參數。
multipass launch [options] <image>
比如,下載并啟動鏡像為 Ubuntu 21.10 的實例,并命名為 sysadm 。
multipass launch -n sysadm "21.10"
實例的啟動停止和删除釋放命令也很簡單。
# 啟動實例 multipass start <實例名稱> # 停止實例 multipass stop <實例名稱> # 删除實例(删除後,還會存在) multipass delete <實例名稱> # 釋放實例(徹底删除) multipass purge <實例名稱>
Multipass 還能通過 --cloud-init 參數來進行實例啟動初始化配置。
multipass launch -n <實例名稱> --cloud-init cloud-config.yaml
其中 yaml 配置文件必須以 #clound-config 開頭,後面再寫入相應的命令。
由于内容繁多比較複雜,所以請小夥伴們自行參考官網文檔實例吧。
https://cloudinit.readthedocs.io/en/latest/topics/examples.html
還有很多其他相關的操作命令,在這兒我們就不一一展開講解了。
有興趣的小夥伴可以到官方文檔中查看。
https://multipass.run/docs/
寫在最後從前面的操作體驗中我相信小夥伴們也能感覺到,這個 Multipass 的用法就和 Docker 容器非常接近,因此熟悉 Docker 那一套的小夥伴肯定能快速上手。
Multipass 的特點就是通過鏡像快速部署虛拟機,即使你對于虛拟機的搭建配置了如指掌,也能很大程序上減輕你的負擔,将更多的時間和精力用于做其他更有意義的事情。
此外 Multipass 由 Canonical 公司開發,雖說是款非常不錯的管理器軟件,但同時它提供的鏡像也僅限于 Ubuntu ,這是它的一個不大不小的局限。
如果你是大量部署 Ubuntu 并将其用于測試的重度用戶的話,那 Multipass 可就派上大用場了。
但要是還想兼容其他不同平台版本的 Linux ,那麼隻能說有些遺憾了,也不知道 Multipass 将來會不會考慮将其他一些同樣優秀的 Linux 發行版也納入其中。
好了,今天關于 Multipass 的分享就到這裡吧,希望你有所收獲,我們下期再見啦!
網管小賈 / sysadm.cc
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!