前言
這玩意說白了就是一個輕量級的虛擬機(jī),允許在Win中啟動一個完整的虛擬機(jī),比VM操作更加的友善更加的Linux,底層用的是Hyper-V。雖然WIndows中有WSL也挺好用的,但是如果需要測試一些比較敏感的Shell腳本或者操作比較底層的庫的話,這玩意玩壞了就重建一個就行了。
我個人比較喜歡用這個系統(tǒng)去構(gòu)建離線的deb的包,或者去測試一些腳本,還有運行一些服務(wù),這樣子我只要將這個虛擬機(jī)關(guān)閉我這個服務(wù)就結(jié)束了,不會影響我的Win系統(tǒng),雖然WSL也能實現(xiàn)這個需求,但是我用下來發(fā)現(xiàn)他們兩的使用場景不太一樣,這個玩意適合運行一些輔助服務(wù),WSL更加適合開發(fā)使用。Docker-Desktop也能運行服務(wù)的說,但是總的來說這里面運行的服務(wù)會更加的穩(wěn)定,不會受到Win的影響,長時間運行的服務(wù)我更喜歡放這個里面運行。
總的來說存在即合理,和WSL有不同的使用場景,看個人需要。
安裝
開啟 Hyper-V
控制面板->程序->啟用或關(guān)閉Windows功能->Hyper-V
將這個選項勾選好,然后點擊確認(rèn),安裝提示操作即可,開啟之后需要重啟電腦。

安裝 Multipass
Multipass下載地址
下載完畢之后雙擊安裝一直下一步就安裝完畢了。
裝完了需要將存儲地址改一下,如果只有C盤就當(dāng)我沒說這個,如果放C盤,久了會影響Win的運行速度
mkdir "D:\Multipass"
Set-ItemProperty -Path "HKLM:System\CurrentControlSet\Control\Session Manager\Environment" -Name MULTIPASS_STORAGE -Value
安裝完畢之后要重啟一下電腦,否則存儲位置不會變?。。?/strong>
創(chuàng)建網(wǎng)橋供虛擬機(jī)使用(固定IP用)
這一步如果不指定一個網(wǎng)卡的話一些持久運行的虛擬機(jī)就會出現(xiàn)每次啟動IP和網(wǎng)關(guān)地址都會變的問題
我建議是指定一個,后期會比較方便。
# 創(chuàng)建虛擬機(jī)的網(wǎng)絡(luò)
New-VMSwitch -SwitchName "vmnet" -SwitchType Internal
# 創(chuàng)建虛擬網(wǎng)卡
New-NetIPAddress -IPAddress "158.50.0.1" -PrefixLength 24 -InterfaceAlias "vEthernet (vmnet)"
# 開啟NAT
New-NetNat -Name vmnet -InternalIPInterfaceAddressPrefix 158.50.0.0/24
新建虛擬機(jī)
# 創(chuàng)建一個 4核心 4G內(nèi)存 10G存儲的虛擬機(jī) 并將虛擬網(wǎng)絡(luò) vmnet作為第二個網(wǎng)卡
multipass launch --name vm1 --cpus 4 --memory 4G --disk 20G --network name=vmnet,mode=manual
進(jìn)入虛擬機(jī)中
執(zhí)行如下的命令就會進(jìn)入虛擬機(jī)的命令行中
multipass shell vm1
配置虛擬機(jī)固定IP
啟動的就是一個完整的Ubuntu虛擬機(jī),可以直接使用Ubuntu的方式進(jìn)行IP固定
打開配置文件,并添加如下的配置即可
配置文件地址為 sudo vi /etc/netplan/50-cloud-init.yaml
eth1: # 網(wǎng)卡名稱,這是固定的
addresses: [158.50.0.2/24] # IP地址,連接的網(wǎng)卡同段即可,可以選擇0.2~0.253之間
gateway4: 158.50.0.1 # 網(wǎng)卡的網(wǎng)關(guān)
nameservers:
addresses: [114.114.114.114] # DNS地址
修改完畢應(yīng)該是這樣的

然后執(zhí)行網(wǎng)絡(luò)重啟指令可以
sudo netplan apply
宿主機(jī)端口轉(zhuǎn)發(fā)
虛擬機(jī)安裝之后所有的服務(wù)和端口都只能在本機(jī)進(jìn)行訪問,如果想要外部也訪問這個端口提供的服務(wù),需要將Win的端口做一個轉(zhuǎn)發(fā)
# 開啟WIndows的防火墻
New-NetFirewallRule -DisplayName "Allow TCP 80" -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow
# 端口轉(zhuǎn)發(fā)
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=80 connectaddress=158.50.0.2 connectport=80
常用指令集
multipass shell <vm_name> # 進(jìn)入某個虛擬機(jī)
multipass stop <vm_name> # 停止某個虛擬機(jī)
multipass start <vm_name> # 啟動虛擬機(jī)
multipass restart <vm_name> # 重啟虛擬機(jī)
multipass list # 列出虛擬機(jī)列表
multipass delete <vm_name> # 清理已經(jīng)刪除的虛擬機(jī)
multipass purge # 清理已經(jīng)刪除的虛擬機(jī)
multipass --help # 查看指令幫助