再見了 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:防止找不到本篇文章,可以收藏點贊,方便翻閱查詢哦