現在大部分開發都已經走向使用 docker 的方式了,但是有些時候使用虛擬機器來模擬會更加方便 (例如:K8s),比較常見的方式都是使用 VirtualBox 跟 VMWare 來建立虛擬主機,但是步驟會比較繁瑣,而 ubuntu 官方出了指令工具 Multipass,可以像是操作 docker 一樣可以快速建立、啟動與關閉虛擬機器,並且方便的動態配置空間、記憶體與 CPU 數量
介紹
官方網站:https://multipass.run/
原始碼:https://github.com/canonical/multipass
Multipass 是一個輕量方便使用的指令工具,其在不同的作業系統是使用不同的虛擬化技術(Linux 使用 KVM, Windows 使用 Hyper-V 而 macOS 使用 HyperKit),並且可以直接指定安裝的 Ubuntu 版本
安裝
依據不同作業系統輸入指定安裝 Multipass
Ubuntu
sudo snap install multipass
macOS
brew install --cask multipass
或者直接下載 pkg 檔案安裝 https://github.com/canonical/multipass/releases/
使用
Multipass 有許多的指令可以使用,這邊列幾一些比較常使用的指令
並且示範一些指令
可用的命令:
- delete 刪除機器
- exec 在機器中執行命令
- find 列出可以安裝 ubuntu 版本 image
- get 獲取配置資訊
- help 查看幫助
- info 查看機器信息
- launch 創建並啟動機器
- list 列出所有機器
- mount 掛載文件夾到機器
- purge 清除已刪除的機器
- recover 恢復已刪除的機器
- restart 重啟機器
- set 設置某個配置
- shell 通過 shell 連接機器
- start 啟動機器
- stop 停止機器
- suspend 暫停機器
- transfer 在本機和機器之間傳輸檔案或文件
- umount 移除機器中掛載的文件夾
- version 查看版本
建立 VM
首先輸入指令查看有哪些 image
multipass find
輸入指令建立 VM (版本 22.04, 2 個虛擬 CPU, 記憶體 2G 硬碟空間 20G)
vm-name
改成自己想取的名稱
multipass launch --name <vm-name> 22.04 --cpus 2 --memory 2G --disk 20G
進入 VM
multipass shell <vm-name>
停止 vm
multipass stop <vm-name>
刪除 vm 並清除出空間
multipass delete <vm-name> multipass purge
對 VM 執行指定指令
可以不用進去機器直接操作某個指令
multipass exec <vm-name> -- <command>
查看 VM 配置
multipass get local.<vm-name>.cpus multipass get local.<vm-name>.disk multipass get local.<vm-name>.memory
修改 VM 配置
可以用指令修改機器資源配置 (需先停止機器)
multipass stop <vm-name> multipass set local.<vm-name>.cpus=4 multipass set local.<vm-name>.disk=60G multipass set local.<vm-name>.memory=7G
從 VM 與 local 之間複製檔案
multipass transfer <local-path> <vm-name>:. multipass transfer <vm-name>:<vm-path> .
mount 資料夾到 VM 上
mount 路徑到 VM 上
multipass mount <local-path> <vm-name>:<vm-path>
解除 mount
multipass umount <vm-name>:<vm-path>