1. 程式人生 > 其它 >再見了 VMware,一款更輕量級的虛擬機器

再見了 VMware,一款更輕量級的虛擬機器

點選“終碼一生”,關注,置頂公眾號

每日技術乾貨,第一時間送達!

Multipass是一個輕量虛擬機器管理器,是由 Ubuntu 運營公司 Canonical 所推出的開源專案。執行環境支援 Linux、Windows、macOS。在不同的作業系統上,使用的是不同的虛擬化技術。在 Linux 上使用的是 KVM、Window 上使用 Hyper-V、macOS 中使用 HyperKit 以最小開銷執行VM,支援在筆記本模擬小型雲。

同時,Multipass 提供了一個命令列介面來啟動和管理 Linux 例項。下載一個全新的映象需要幾秒鐘的時間,並且在幾分鐘內就可以啟動並執行 VM。(直呼好傢伙,大大降低的我們安裝虛擬機器的成本了)

Multipass官網:https://multipass.run/

1、開始使用

在使用 Multipass 之前 ,首先需要安裝 Multipass 工具,可以開啟官網進行下載

https://multipass.run/

選擇對應的作業系統,因為我的是 Mac 電腦,所以選擇 MacOS,點選 Download 開始下載

如果電腦裝了 brew 可以直接命令列下載安裝:

brew caskinstallmultipass

下載安裝成功後, 執行以下命令可以檢視當前軟體版本:

multipass--version

安裝成功後,點選執行,即可開啟 Multipass 客戶端,這裡能夠快速的通過 Open Shell 建立和啟動一個虛擬機器

下面,我們來介紹如何通過命令的方式,建立一臺虛擬機器

2、建立Ubuntu虛擬機器

首先,通過以下指令檢視可供下載的 Ubuntu 映象

multipassfind

執行成功後,可以看到下面的這些映象列表,包含各種版本的

ImageAliasesVersionDescription
corecore1620200818UbuntuCore16
core1820200812UbuntuCore18
18.04bionic20211109Ubuntu18.04LTS
20.04focal,lts20211118Ubuntu20.04LTS
21.04hirsute20211119Ubuntu21.04
21.10impish20211103Ubuntu21.10
appliance:adguard-home20200812UbuntuAdGuardHomeAppliance
appliance:mosquitto20200812UbuntuMosquittoAppliance
appliance:nextcloud20200812UbuntuNextcloudAppliance
appliance:openhab20200812UbuntuopenHABHomeAppliance
appliance:plexmediaserver20200812UbuntuPlexMediaServerAppliance
anbox-cloud-appliancelatestAnboxCloudAppliance
minikubelatestminikubeislocalKubernetes

下載最新版的 Ubuntu 映象並執行,初次建立時需要下載 Ubuntu 映象,網路暢通的情況下,稍等片刻即可。

multipasslaunch -n vm01 -c1-m1G-d10G

自定義配置建立可以參考如下方式:

-n,--name: 名稱
-c,--cpus: cpu核心數, 預設: 1
-m,--mem: 記憶體大小, 預設: 1G
-d,--disk: 硬碟大小, 預設: 5G

3、操作虛擬機器

檢視虛擬機器列表

虛擬機器建立完成後,可以使用multipass list命令進行檢視虛擬機器列表

%multipasslist
NameStateIPv4Image
vm01Running192.168.64.2Ubuntu20.04LTS

可以看到目前正在執行一臺 Ubuntu 20.04 版本的虛擬機器,並且對應的 IP 地址為 192.168.64.2

外部操作虛擬機器

通過multipass exec命令在例項內執行給定的命令。第一個引數是執行命令的例項,也就是 vm01

我們通過 exec 命令,就可以在外部操作剛剛建立的虛擬機器,例如檢視內部所處的目錄,執行 pwd 命令

#multipassexecvm01pwd
/home/ubuntu

檢視虛擬機器資訊

通過multipass info命令,即可檢視當前執行的虛擬機器資訊

#multipassinfovm01
Name:vm01
State:Running
IPv4: 192.168.64.2
Release:Ubuntu20.04.3LTS
Imagehash: 91740d72ffff(Ubuntu20.04LTS)
Load: 0.000.000.00
Diskusage: 1.3Goutof9.5G
Memoryusage: 170.9Moutof1.9G
Mounts:--

進入虛擬機器

通過multipass shell命令,即可進入到虛擬機器內部

multipassshellvm01

執行後的結果如下所示,可以看到目前虛擬機器的一些系統配置資訊,以及記憶體和磁碟的使用情況

同時會執行一個新的 Ubuntu 系統,此時便進入到了Ubuntu 環境中, 在裡面可以執行相關的 linux 指令

當然如果不想進入系統內部,也可以通過上述提到的 multipass exce 命令,來操作 Ubuntu 系統

首先執行下面命令,給系統設定一個 root 密碼,設定好密碼後,使用 su root 切換到 root 使用者

#設定密碼
sudo passwd
#切換 root
su root

ubuntu 是使用 apt-get 來進行包管理的,首先更新一下 apt-get,然後安裝 nginx

# 更新apt
apt-getupdate
# 安裝 nginx
apt-getinstall 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

下面我們可以測試一下,nginx 是否安裝成功,在 mac 上開啟瀏覽器,輸入虛擬機器的 ip 地址 192.168.64.2

可以看出,目前 nginx 已經成功運行了,後續的話,可能會考慮在上面部署更多的應用。

掛載資料卷

multipass 還提供和 Docker 一樣的掛載資料卷的功能,能夠與外部宿主機的檔案保持同步。

#掛載格式
multipass mount 宿主機目錄 例項名:虛擬機器目錄

下面,我在使用者的目錄下,建立一個 hello 目錄

#建立hello目錄
mkdir hello
#掛載
multipass mount /Users/moxi/hello vm01:/hello

掛載完成後,我們回到例項 vm01 中,可以看出多了一個 hello 資料夾,說明已經成功掛載~

因此,以後在 vm01 的 hello資料夾 中建立的檔案,都會在的宿主機的 hello 資料夾同步顯示

解除安裝資料卷

如果以後不需要用到掛載了,可以使用 unmount 命令解除安裝

#解除安裝資料卷
multipass umount 容器名

傳輸檔案

除了使用上述的 mount 掛載卷的方式實現檔案的互動,同時還可以通過 transfer 命令,將宿主機的檔案,傳送到虛擬機器內部

multipasstransfer 主機檔案 容器名:容器目錄

例如,將 hello.txt 傳送到

multipass transfer hello.txt vm01:/home/ubuntu/

刪除和釋放例項

使用下面的命令,可以開啟、停止、刪除和釋放例項

#啟動例項
multipass start vm01
#停止例項
multipass stop vm01
#刪除例項(刪除後,還會存在)
multipass delete vm01
#釋放例項(徹底刪除)
multipass purge vm01

容器配置自動化

為了保持開發環境和線上環境一致性 同時節省部署時間 multipass 給我們提供了 --cloud-init 選項進行容器啟動初始化配置:

multipass launch--name ubuntu --cloud-init config.yaml

上面 config.yaml 則是容器的初始化配置檔案,例如,我們想在初始化容器的時候,自動下載安裝 Node.js,內容如下:

#cloud-config
runcmd:
- curl -sL https://deb.nodesource.com/setup_12.x| sudo -E bash -
- sudo apt-getinstall -ynodejs

runcmd 可以指定容器首次啟動時執行的命令

凡是使用者自定義的cloud-init的配置檔案,必須以#cloud-config開頭,這是cloud-init識別它的方式。

yaml 配置檔案可以參考下面的文章

https://cloudinit.readthedocs.io/en/latest/topics/examples.html?highlight=lock-passwd#including-users-and-groups

更多關於 multipass 的高階的技巧,歡迎訪問 multipass 官方文件。

https://multipass.run/docs/

好了,本期關於 Multipass 的基礎學習就到這裡了,感興趣的小夥伴環境下載自己動手學習呢~

4、總結

使用了一陣子後,Multipass 在使用起來很簡潔直觀,在整體操作上和 docker 類似,如果想在自己電腦上快速搭建一個 Linux 系統用於學習的話,選擇使用 Multipass 還是非常方便的。

唯一不足的地方就是,Multipass 是由 Ubuntu 背後的 Canonical 公司開發的,因此 Multipass 所使用的映象也都是 Ubuntu 映象(這也可以理解,畢竟支援自家的產品),不過對於習慣了使用 CentOS 的使用者來說,還是用些許不太習慣。不過瑕不掩瑜,Multipass 在我看來還是一款非常棒的軟體~

PS:防止找不到本篇文章,可以收藏點贊,方便翻閱查詢哦