輕量虛擬機之Multipass


官網:https://multipass.run/

 

它可以快速在電腦上快速搭建一個輕量級的虛擬機,並且相比於 Vmware 更加輕量,只需一行命令快速創建 Ubuntu 虛擬機。

Multipass 是一個輕量虛擬機管理器,是由 Ubuntu 運營公司 Canonical 所推出的開源項目。運行環境支持 LinuxWindowsmacOS。在不同的操作系統上,使用的是不同的虛擬化技術。在 Linux 上使用的是 KVMWindow 上使用 Hyper-VmacOS 中使用 HyperKit 以最小開銷運行VM,支持在筆記本模擬小型雲。

同時,Multipass 提供了一個命令行界面來啟動和管理 Linux 實例。下載一個全新的鏡像需要幾秒鍾的時間,並且在幾分鍾內就可以啟動並運行 VM。(直呼好家伙,大大降低的我們安裝虛擬機的成本了)

 

 

【安裝】

 下載指定版本的Multipass工具

 

 

mac:

brew cask install multipass

 

下載安裝成功后, 執行以下命令可以查看當前軟件版本:

multipass --version

安裝成功后,點擊運行,即可打開 Multipass 客戶端,這里能夠快速的通過 Open Shell 創建和啟動一個虛擬機

 

創建Ubuntu虛擬機

首先,通過以下指令查看可供下載的 Ubuntu 鏡像

multipass find

運行成功后,可以看到下面的這些鏡像列表,包含各種版本的

下載最新版的 Ubuntu 鏡像並運行,初次創建時需要下載 Ubuntu 鏡像,網絡暢通的情況下,稍等片刻即可。

multipass launch -n vm01 -c 1 -m 1G -d 10G

-n, --name: 名稱
-c, --cpus: cpu核心數, 默認: 1
-m, --mem: 內存大小, 默認: 1G
-d, --disk: 硬盤大小, 默認: 5G

 

查看虛擬機列表:

multipass list

 

外部操作虛擬機:

multipass exec命令在實例內執行給定的命令, 第一個參數是運行命令的實例,

實例:
查看內部所處目錄
multipass exec vm01 pwd

 

查看虛擬機的信息:

multipass info vm01


Name:           primary
State:          Running
IPv4:           192.168.54.181
Release:        Ubuntu 20.04.3 LTS
Image hash:     e1264d4cca6c (Ubuntu 20.04 LTS)
Load:           0.32 1.21 0.88
Disk usage:     1.9G out of 4.7G
Memory usage:   181.7M out of 1012.5M
Mounts:         E:/app => /app
                    UID map: -2:default
                    GID map: -2:default

 

進入虛擬機:

multipass shell vm01

 

 

同時會運行一個新的 Ubuntu 系統,此時便進入到了Ubuntu 環境中, 在里面可以執行相關的 linux 指令

當然如果不想進入系統內部,也可以通過上述提到的 multipass exce 命令,來操作 Ubuntu 系統

首先執行下面命令,給系統設置一個 root 密碼,設置好密碼后,使用 su root 切換到 root 用戶

  

# 設置密碼
sudo passwd

# 切換root
su root

 

ubuntu 是使用 apt-get 來進行包管理的,首先更新一下 apt-get,然后安裝 nginx

apt-get update

apt-get install nginx

安裝好 nginx 后,可以到 /etc/nginx 目錄即可看到剛剛的 nginx 配置信息

下面我們可以測試一下,nginx 是否安裝成功,在 mac 上打開瀏覽器,輸入虛擬機的 ip 地址 192.168.64.2

 

 

 

【掛載數據卷】

multipass 還提供和 Docker 一樣的掛載數據卷的功能,能夠與外部宿主機的文件保持同步。

 

# 掛載格式
multipass mount 宿主機目錄  實例名:虛擬機目錄

# 創建hello目錄
mkdir hello
# 掛載
multipass mount /Users/moxi/hello  vm01:/hello

 

掛載完成后,我們回到實例 vm01 中,可以看出多了一個 hello 文件夾,說明已經成功掛載~

 

注意點:

在windows下默認掛載是禁用的, 需要手動開啟

multipass set local.privileged-mounts=true

 

【卸載數據卷】

#卸載數據卷
multipass umount 容器名

 

 

【傳輸文件】

除了使用上述的 mount 掛載卷的方式實現文件的交互,同時還可以通過 transfer 命令,將宿主機的文件,發送到虛擬機內部

multipass transfer 主機文件 容器名:容器目錄

例如,將 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-get install -y nodejs

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 官方文檔

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM