推薦一款M1晶片電腦快速搭建叢集的虛擬機器器軟體

2022-06-22 12:00:48

虛擬機器器軟體太多了,出名的莫過於VMwareVirutlaBox以及Parallels Desktop

我們使用虛擬機器器軟體一般有兩種用途:

  1. 安裝不同於宿主機系統的擁有使用者介面的作業系統,比如Windows安裝桌面版Ubuntu,Mac安裝Windows等,用於日常工作和生活的使用;

這一需求我目前使用Parallels Desktop來解決,在我本機上安裝了WindowsUbuntu的桌面版。Parallels Desktop除了貴,沒有其他問題!

  1. 另一種是便於開發者快速建立和部署虛擬化開發環境(叢集環境),本文推薦的虛擬軟體就是這個作用。

之前我在Windows上都是使用VirtualBox+Vagrant的方式快速建立和銷燬虛擬機器器。現在我的工作主機換成了M1晶片的Mac,而VirtualBox並沒有給予適配。

最近發現了一款叫做Multipass的虛擬機器器軟體,重點是,我的M1電腦可以使用!接下來給大家分享一下使用心得。

1. 下載安裝Multipass

Mac下推薦使用brew安裝Multipass,免去了點選下載,解壓以及安裝的步驟

brew install --cask multipass

安裝之後,檢視是否安裝成功

➜  ~ multipass version
multipass   1.9.2+mac
multipassd  1.9.2+mac

2. 檢視Multipass支援的映象

➜  ~ multipass find
Image                       Aliases           Version          Description
18.04                       bionic            20220615         Ubuntu 18.04 LTS
20.04                       focal,lts         20220615         Ubuntu 20.04 LTS
21.10                       impish            20220609         Ubuntu 21.10
22.04                       jammy             20220609         Ubuntu 22.04 LTS
anbox-cloud-appliance                         latest           Anbox Cloud Appliance
charm-dev                                     latest           A development and testing environment for charmers
docker                                        latest           A Docker environment with Portainer and related tools
minikube                                      latest           minikube is local Kubernetes

注意Multipass只提供了Ubuntu的發行版映象,這對於開發人員開說並不算什麼缺點,至少對我是這樣的

3. 建立虛擬機器器

接下來我們選擇需要的映象版本來安裝Ubuntu範例,這裡以jammy(映象列表的Aliases一列)為例

➜  ~ multipass launch jammy
Launched: boss-wallaroo

其中,boss-wallarooMultipassjammy映象範例隨機起的名字,你也可以使用--name來指定範例名稱。

~ multipass launch jammy --name chanmufeng-ubuntu
Launched: chanmufeng-ubuntu

4. 操作虛擬機器器

4.1. 檢視虛擬機器器列表

使用multipass info --all檢視安裝的所有虛擬機器器

➜  ~ multipass info --all
Name:           chanmufeng-ubuntu
State:          Running
IPv4:           192.168.64.3
Release:        Ubuntu 22.04 LTS
Image hash:     746fd17e2944 (Ubuntu 22.04 LTS)
Load:           0.02 0.02 0.00
Disk usage:     1.3G out of 4.7G
Memory usage:   162.4M out of 961.9M
Mounts:         --

Name:           lucky-dog
State:          Stopped
IPv4:           --
Release:        --
Image hash:     746fd17e2944 (Ubuntu 22.04 LTS)
Load:           --
Disk usage:     --
Memory usage:   --
Mounts:         --

執行結果表明,我電腦上有了2個範例,分別是chanmufeng-ubuntu(執行中)、lucky-dog(停止狀態)。

4.2. 進入虛擬機器器,執行命令

執行multipass shell 範例名 進入範例,如果範例未啟動,則會自動啟動

➜  ~ multipass shell lucky-dog
Welcome to Ubuntu 22.04 LTS (GNU/Linux 5.15.0-37-generic aarch64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sun Jun 19 21:06:43 CST 2022

  System load:             0.3203125
  Usage of /:              29.8% of 4.77GB
  Memory usage:            20%
  Swap usage:              0%
  Processes:               100
  Users logged in:         0
  IPv4 address for enp0s1: 192.168.64.2
  IPv6 address for enp0s1: fd96:8c7d:a0ba:459d:5054:ff:fea5:1ea3


0 updates can be applied immediately.


Last login: Tue Jun 14 13:41:27 2022 from 192.168.64.1
ubuntu@lucky-dog:~$ ~

然後就可以在lucky-dog中自由地玩耍了。

4.3. 停止/重啟虛擬機器器

# 暫停
➜  ~ multipass stop lucky-dog
# 啟動
➜  ~ multipass start lucky-dog

4.4. 移除範例到「回收站」

使用如下命令刪除範例

➜  ~ multipass delete chanmufeng-ubuntu

delete命令只是將chanmufeng-ubuntu範例標記為DELETED狀態而已,相當於放到了回收站,但是本身依然存在。

使用list命令看一下

➜  ~ multipass list
Name                    State             IPv4             Image
chanmufeng-ubuntu       Deleted           --               Not Available
lucky-dog               Running           192.168.64.2     Ubuntu 22.04 LTS

如果後悔了,可以使用recover命令進行復原

➜  ~ multipass recover chanmufeng-ubuntu

再次使用list命令看一下

➜  ~ multipass list
Name                    State             IPv4             Image
chanmufeng-ubuntu       Stopped           --               Not Available
lucky-dog               Running           192.168.64.2     Ubuntu 22.04 LTS

4.5. 徹底刪除範例

這一步相當於從「回收站」徹底刪除,當然了,前提是範例必須已經被放在了「回收站」。

➜  ~ multipass delete chanmufeng-ubuntu
➜  ~ multipass purge
➜  ~ multipass list
Name                    State             IPv4             Image
lucky-dog               Running           192.168.64.2     Ubuntu 22.04 LTS

5. 其他進階功能

除了以上基本功能,Multipass還提供其他進階功能,本文只是提一嘴,更多細節,大家存取官網檢視一下檔案即可。

5.1. 自定義硬體設定

  • 可以自定義CPU核心數、硬碟大小以及記憶體大小等引數

  • 自定義網路卡設定和DNS設定

5.2. 快速設定環境

虛擬機器器功能給我們帶來的好處就是對於範例,我們想建就建,想刪就刪。

可是刪了之後重新建立,難免很多軟體和工具需要重新進行設定,Mutipass提供了--cloud-init對容器進行初始化設定。

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

config.yaml 是初始化組態檔,內容如下:

runcmd:
 - curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
 - sudo apt-get install -y nodejs  

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

5.3. 搭配VirtualBox

當然,這個功能不適合M1,但是在其他平臺上搭配VirtualBox可以實現和Vagrant同樣的效果。

通過VirtualBoxMultipass虛擬機器器進行視覺化操作。

還有其他的一些功能需要讀者朋友們自己發掘一下了,更多細節參見官網