再見了 VMware,一款更輕量級(jí)的虛擬機(jī)!
Multipass是一個(gè)輕量虛擬機(jī)管理器,是由 Ubuntu 運(yùn)營(yíng)公司 Canonical 所推出的開源項(xiàng)目。運(yùn)行環(huán)境支持 Linux、Windows、macOS。在不同的操作系統(tǒng)上,使用的是不同的虛擬化技術(shù)。在 Linux 上使用的是 KVM、Window 上使用 Hyper-V、macOS 中使用 HyperKit 以最小開銷運(yùn)行VM,支持在筆記本模擬小型云。
同時(shí),Multipass 提供了一個(gè)命令行界面來啟動(dòng)和管理 Linux 實(shí)例。下載一個(gè)全新的鏡像需要幾秒鐘的時(shí)間,并且在幾分鐘內(nèi)就可以啟動(dòng)并運(yùn)行 VM。(直呼好家伙,大大降低的我們安裝虛擬機(jī)的成本了)
Multipass官網(wǎng):https://multipass.run/

1
在使用 Multipass 之前 ,首先需要安裝 Multipass 工具,可以打開官網(wǎng)進(jìn)行下載
https://multipass.run/
選擇對(duì)應(yīng)的操作系統(tǒng),因?yàn)槲业氖?Mac 電腦,所以選擇 MacOS,點(diǎn)擊 Download 開始下載

如果電腦裝了 brew 可以直接命令行下載安裝:
brew cask install?multipass下載安裝成功后, 執(zhí)行以下命令可以查看當(dāng)前軟件版本:
multipass --version安裝成功后,點(diǎn)擊運(yùn)行,即可打開 Multipass 客戶端,這里能夠快速的通過 Open Shell 創(chuàng)建和啟動(dòng)一個(gè)虛擬機(jī)

下面,我們來介紹如何通過命令的方式,創(chuàng)建一臺(tái)虛擬機(jī)
2
首先,通過以下指令查看可供下載的 Ubuntu 鏡像
multipass find運(yùn)行成功后,可以看到下面的這些鏡像列表,包含各種版本的
Image???????????????????????Aliases???????????Version??????????Description
core????????????????????????core16????????????20200818 Ubuntu?Core?16
core18????????????????????????????????????????20200812 Ubuntu?Core?18
18.04???????????????????????bionic????????????20211109 Ubuntu?18.04?LTS
20.04???????????????????????focal,lts?????????20211118 Ubuntu?20.04?LTS
21.04???????????????????????hirsute???????????20211119 Ubuntu?21.04
21.10???????????????????????impish????????????20211103 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下載最新版的 Ubuntu 鏡像并運(yùn)行,初次創(chuàng)建時(shí)需要下載 Ubuntu 鏡像,網(wǎng)絡(luò)暢通的情況下,稍等片刻即可。
multipass?launch -n vm01 -c 1?-m 1G?-d 10G自定義配置創(chuàng)建可以參考如下方式:
-n, --name: 名稱
-c, --cpus: cpu核心數(shù), 默認(rèn): 1
-m, --mem: 內(nèi)存大小, 默認(rèn): 1G
-d, --disk: 硬盤大小, 默認(rèn): 5G3
查看虛擬機(jī)列表
虛擬機(jī)創(chuàng)建完成后,可以使用multipass list命令進(jìn)行查看虛擬機(jī)列表
% multipass?list
Name????????????????????State?????????????IPv4?????????????Image
vm01????????????????????Running???????????192.168.64.2?????Ubuntu?20.04?LTS可以看到目前正在運(yùn)行一臺(tái) Ubuntu 20.04 版本的虛擬機(jī),并且對(duì)應(yīng)的 IP 地址為 192.168.64.2
外部操作虛擬機(jī)
通過multipass exec命令在實(shí)例內(nèi)執(zhí)行給定的命令。第一個(gè)參數(shù)是運(yùn)行命令的實(shí)例,也就是 vm01
我們通過 exec 命令,就可以在外部操作剛剛創(chuàng)建的虛擬機(jī),例如查看內(nèi)部所處的目錄,執(zhí)行 pwd 命令
#?multipass exec?vm01 pwd
/home/ubuntu查看虛擬機(jī)信息
通過multipass info命令,即可查看當(dāng)前運(yùn)行的虛擬機(jī)信息
# multipass?info?vm01
Name: vm01
State: Running
IPv4: 192.168.64.2
Release: Ubuntu?20.04.3?LTS
Image?hash: 91740d72ffff?(Ubuntu?20.04?LTS)
Load: 0.00?0.00?0.00
Disk?usage: 1.3G?out?of?9.5G
Memory?usage: 170.9M?out?of?1.9G
Mounts: --進(jìn)入虛擬機(jī)
通過multipass shell命令,即可進(jìn)入到虛擬機(jī)內(nèi)部
multipass shell?vm01運(yùn)行后的結(jié)果如下所示,可以看到目前虛擬機(jī)的一些系統(tǒng)配置信息,以及內(nèi)存和磁盤的使用情況

同時(shí)會(huì)運(yùn)行一個(gè)新的 Ubuntu 系統(tǒng),此時(shí)便進(jìn)入到了Ubuntu 環(huán)境中, 在里面可以執(zhí)行相關(guān)的 linux 指令
當(dāng)然如果不想進(jìn)入系統(tǒng)內(nèi)部,也可以通過上述提到的 multipass exce 命令,來操作 Ubuntu 系統(tǒng)
首先執(zhí)行下面命令,給系統(tǒng)設(shè)置一個(gè) root 密碼,設(shè)置好密碼后,使用 su root 切換到 root 用戶
#?設(shè)置密碼
sudo passwd
#?切換 root
su rootubuntu 是使用 apt-get 來進(jìn)行包管理的,首先更新一下 apt-get,然后安裝 nginx
# 更新apt
apt-get?update
# 安裝 nginx
apt-get?install nginx安裝好 nginx 后,可以到 /etc/nginx 目錄即可看到剛剛的 nginx 配置信息
root@vm01:/lost+found# cd /etc/nginx/
root@vm01:/etc/nginx# ls
conf.d fastcgi_params koi-win modules-available nginx.conf scgi_params sites-enabled uwsgi_params
fastcgi.conf koi-utf mime.types modules-enabled proxy_params sites-available snippets win-utf下面我們可以測(cè)試一下,nginx 是否安裝成功,在 mac 上打開瀏覽器,輸入虛擬機(jī)的 ip 地址 192.168.64.2

可以看出,目前 nginx 已經(jīng)成功運(yùn)行了,后續(xù)的話,可能會(huì)考慮在上面部署更多的應(yīng)用。
掛載數(shù)據(jù)卷
multipass 還提供和 Docker 一樣的掛載數(shù)據(jù)卷的功能,能夠與外部宿主機(jī)的文件保持同步。
#?掛載格式
multipass mount 宿主機(jī)目錄 實(shí)例名:虛擬機(jī)目錄下面,我在用戶的目錄下,創(chuàng)建一個(gè) hello 目錄
#?創(chuàng)建hello目錄
mkdir hello
#?掛載
multipass mount /Users/moxi/hello vm01:/hello掛載完成后,我們回到實(shí)例 vm01 中,可以看出多了一個(gè) hello 文件夾,說明已經(jīng)成功掛載~

因此,以后在 vm01 的 hello文件夾 中創(chuàng)建的文件,都會(huì)在的宿主機(jī)的 hello 文件夾同步顯示
卸載數(shù)據(jù)卷
如果以后不需要用到掛載了,可以使用 unmount 命令卸載
#卸載數(shù)據(jù)卷
multipass umount 容器名傳輸文件
除了使用上述的 mount 掛載卷的方式實(shí)現(xiàn)文件的交互,同時(shí)還可以通過 transfer 命令,將宿主機(jī)的文件,發(fā)送到虛擬機(jī)內(nèi)部
multipass?transfer 主機(jī)文件 容器名:容器目錄例如,將 hello.txt 發(fā)送到
multipass transfer hello.txt vm01:/home/ubuntu/刪除和釋放實(shí)例
使用下面的命令,可以開啟、停止、刪除和釋放實(shí)例
#?啟動(dòng)實(shí)例
multipass start vm01
#?停止實(shí)例
multipass stop vm01
#?刪除實(shí)例(刪除后,還會(huì)存在)
multipass delete vm01
#?釋放實(shí)例(徹底刪除)
multipass purge vm01容器配置自動(dòng)化
為了保持開發(fā)環(huán)境和線上環(huán)境一致性 同時(shí)節(jié)省部署時(shí)間 multipass 給我們提供了 --cloud-init 選項(xiàng)進(jìn)行容器啟動(dòng)初始化配置:
multipass launch --name ubuntu --cloud-init config.yaml上面 config.yaml 則是容器的初始化配置文件,例如,我們想在初始化容器的時(shí)候,自動(dòng)下載安裝 Node.js,內(nèi)容如下:
#cloud-config
runcmd:
??- curl -sL https://deb.nodesource.com/setup_12.x?| sudo -E bash -
??- sudo apt-get?install -y?nodejsruncmd 可以指定容器首次啟動(dòng)時(shí)運(yùn)行的命令
凡是用戶自定義的cloud-init的配置文件,必須以#cloud-config開頭,這是cloud-init識(shí)別它的方式。
yaml 配置文件可以參考下面的文章
https://cloudinit.readthedocs.io/en/latest/topics/examples.html?highlight=lock-passwd#including-users-and-groups
更多關(guān)于 multipass 的高階的技巧,歡迎訪問 multipass 官方文檔。
https://multipass.run/docs/
好了,本期關(guān)于 Multipass 的基礎(chǔ)學(xué)習(xí)就到這里了,感興趣的小伙伴環(huán)境下載自己動(dòng)手學(xué)習(xí)呢~
4
使用了一陣子后,Multipass 在使用起來很簡(jiǎn)潔直觀,在整體操作上和 docker 類似,如果想在自己電腦上快速搭建一個(gè) Linux 系統(tǒng)用于學(xué)習(xí)的話,選擇使用 Multipass 還是非常方便的。
唯一不足的地方就是,Multipass 是由 Ubuntu 背后的 Canonical 公司開發(fā)的,因此 Multipass 所使用的鏡像也都是 Ubuntu 鏡像(這也可以理解,畢竟支持自家的產(chǎn)品),不過對(duì)于習(xí)慣了使用 CentOS 的用戶來說,還是用些許不太習(xí)慣。不過瑕不掩瑜,Multipass 在我看來還是一款非常棒的軟件~
往期推薦
