Appearance
用 Mutipass 跑個類似公有雲的 VM
前言
在本地要跑個 VM,通常都是用VirtualBox或是VMware,假如是用 Mac arm 架構,M1/M2 系列的,那會有一些問題
M1 使用 VirtualBox,除了效能差之外,還常常 crash,而且官方似乎不打算修復(參考連結)
VMware 新版的Fusion,需要 199 美
Mac M1 有個parallel Desktop,可裝虛擬機,很好用,尤其拿來玩 windows 遊戲,但是一年也要 4000 多台幣
那要免費的,又能在 M1/M2 上正常運作的,Multipass絕對是最佳選擇
什麼是 Multipass
- Multipass 是一個輕量級的
VM管理工具 - 使用業界標準
cloud-init,如同其他著名公有雲一樣,用一樣的方式去啟動instance - 可以在
Linux、Mac、Windows上面運行
cloud-init
cloud-init是業界標準,各大雲平台拿來創 VM 的 image 模板
創建的時候也可以帶入自定義的 metadata(類似設定)
支援主流的 Ubuntu、archLinux、CentOS、FreeBSD、Fedora、OpenSuse、Gentoo Linux 等等
如何使用 Multipass
安裝
在官網的安裝頁面,選擇自己對應的系統安裝
我是用 Mac,使用 brew 去安裝,很簡單
安裝完輸入multipass version來檢查有沒有安裝成功
bash
brew update
brew install multipass
multipass version
# multipass 1.13.0+mac
# multipassd 1.13.0+mac啟動一個 VM
打下面指令,會啟動一個叫vm的 instance
設定名稱、cpus、記憶體跟硬碟大小
假如沒設定,名稱會變成隨機,規格會用跑該 VM 最小的規格
bash
multipass launch --name vm --cpus 2 --memory 8G --disk 4G輸入multipass list,列出所有 instance
輸入multipass info vm,可以看名叫 vm 的詳細資訊

輸入multipass shell vm,可以進到名叫vm的 instance 裡面操作
輸入exit就可以離開

常用指令
輸入multipass help,會列出所有指令,對常用的做一些說明
bash
multipass launch # 新建一個instance
multipass find # 列出可用的image
multipass launch <imageType>
# 用選定的image種類去起instance
# 有docker可以起portainer
# 有minikube可以起k8s
multipass list # 列出instance
multipass info <name> # 查某個instance詳細資訊
multipass shell <name> # 進到某個instance的command line
multipass suspend <name> # 待機某個instance
multipass stop <name> # 停止某個instance
multipass start <name> # 啟動某個已待機/停止的instance
multipass delete <name> # 刪除某個instance, 只會標注刪除
multipass purge # 把所有標注刪除的instance真的刪除蠻意外的,他居然有 portainer 跟 minikube
multipass shell
multipass shell vm其實相當於以下的指令
key 放在/var/root/Library/Application\ Support/multipassd/ssh-keys/id_rsa裡面
bash
sudo ssh -i /var/root/Library/Application\ Support/multipassd/ssh-keys/id_rsa ubuntu@192.168.205.9