下面是一篇面向实战、逐步推进的 Multipass使用教程。内容覆盖安装、常用命令、网络与文件共享、cloud-init 自动化、别名(alias)、快照/回滚、以及两套完整实例。文中关键处给出官方参考以便进一步查看。
Multipass 是什么?
Multipass 是一款轻量级的本地 Ubuntu 虚拟机管理工具,支持 Linux / Windows / macOS,用几条命令就能拉起“云镜像风格”的 Ubuntu 实例(支持 cloud-init)。非常适合本地开发、测试多机应用、做实验环境等。官方教程与命令参考见文档站点。 ([Ubuntu Documentation][1])
安装(Windows / macOS / Linux)
- Windows / macOS:到 Multipass 官网下载安装包(图形界面 + CLI)。 ([Ubuntu Documentation][1])
- Linux(Snap):多数发行版可直接
sudo snap install multipass。这是 MicroK8s 官方推荐的安装方式之一。 ([microk8s.io][2])
安装完成后,在终端中运行
multipass version验证。
驱动说明
Multipass 底层可使用不同的虚拟化后端(如 Hyper-V、KVM/QEMU、LXD 等),可查询 / 切换:
multipass get local.drivermultipass set local.driver=<driver> # 例如 hyperv / qemu / lxd(因平台而异)驱动的选择与配置详见官方“Set up the driver”。 ([Ubuntu Documentation][3])
常用命令速查
multipass find # 列出可用镜像(如 24.04, 22.04, lts, daily 等)multipass launch --name dev # 启动默认 LTS 实例,命名为 devmultipass launch 24.04 -n dev2 -c 2 -m 4G -d 20G # 自定义 CPU/内存/磁盘multipass list # 列出实例multipass info dev # 查看 dev 的 IP/资源/镜像等multipass shell dev # 进入实例交互 Shellmultipass exec dev -- uname -a # 在实例里执行命令(无需进入)multipass stop dev # 停止multipass start dev # 启动multipass delete dev # 标记删除(仍占磁盘)multipass purge # 彻底清理被 delete 的实例multipass mount ~/project dev:/home/ubuntu/project # 主机目录挂载进实例multipass umount dev:/home/ubuntu/project # 取消挂载以上语法与默认值(如 1 vCPU / 1GiB RAM / 5GiB 磁盘)可参考官方/权威资料。 ([Ubuntu Documentation][4], [Linux Command Library][5], [learn.arm.com][6], [fig.io][7])
文件共享:mount 与 transfer
-
mount:将主机目录映射到实例——适合“频繁双向编辑”的项目文件。÷÷
bash multipass mount ~/code dev:/home/ubuntu/code使用细节见官方“mount”命令/教程。 ([GitHub][8])
-
transfer:一次性复制文件(双向均可)。
bash multipass transfer ./local.txt dev:/home/ubuntu/local.txtmultipass transfer dev:/home/ubuntu/remote.log ./remote.log
(命令参考与示例文章可进一步阅读。) ([DEV Community][9])
网络与端口:如何从宿主机访问实例
-
multipass info <name>查看实例的私网 IPv4。在多数平台上,宿主机可直接访问该 IP 的服务(如http://<实例IP>:80)。 ([learn.arm.com][6]) -
需要更灵活的网络(如桥接到物理网)时,可先切换到支持的驱动(例如 LXD),再在
launch时指定--network <iface>:bash multipass set local.driver=lxdmultipass launch -n vm01 --network enp3s0具体能力因平台/驱动而异,实践经验帖可参考。 ([Ask Ubuntu][10])
-
可用网络列表:
bash multipass networks命令参考见官方“networks”。 ([Ubuntu Documentation][11])
小贴士:在 macOS/Windows 上,Multipass 默认会给实例分配一个宿主可达的私网段;若需要从局域网其他机器访问实例,通常要用桥接网络或在宿主做反向代理/端口转发。相关讨论可作参考。 ([Discuss Kubernetes][12], [Ubuntu Community Hub][13])
cloud-init:开机即定制
Multipass 原生支持 cloud-init。准备一个 cloud-init.yaml,在 launch 时带上 --cloud-init,即可自动装包、配置用户、写文件、开服务等。 ([cloudinit.readthedocs.io][14])
示例:安装 Nginx 并写入主页
# cloud-init.yaml# 以 Ubuntu 默认用户 ubuntu 为例package_update: truepackages: - nginxwrite_files: - path: /var/www/html/index.html permissions: '0644' content: | <h1>Hello from Multipass + Nginx</h1>runcmd: - systemctl enable --now nginxmultipass launch 24.04 -n web --cloud-init cloud-init.yaml -c 2 -m 2Gmultipass info web # 记下 IPv4# 在宿主浏览器访问 http://<IPv4> 验证(更多 cloud-init 语法见官方指南。) ([Ubuntu Documentation][15])
别名(alias):在宿主直接调用实例里的命令
你可以给“实例内的某个命令”创建宿主侧别名:
multipass alias <实例名>:<命令> <别名># 例:把 dev 实例里的 `npm` 暴露成宿主上的 npm-devmultipass alias dev:npm npm-devnpm-dev -v别名语法与完整操作见官方 alias 文档与教程;示例语法也可参考第三方命令汇总。 ([Ubuntu Documentation][16], [binarytides.com][17])
快照 / 回滚(snapshot / restore)
当你要“可逆地”尝试系统升级或大改动时,非常有用:
multipass snapshot dev --name before-upgrade # 生成快照# ... 做一些危险操作 ...multipass restore dev before-upgrade # 回滚到快照multipass list --snapshots # 查看快照# 删除快照(或删除实例的某个快照)multipass delete dev.before-upgrade命令详见官方 snapshot / restore 参考与说明文档。 ([Ubuntu Documentation][18])
两套完整实例
实例 A:本地 Web 开发“即插即用”
目标:在 Ubuntu 实例里跑 Node.js / pnpm,主机编辑代码、实例内跑服务,宿主浏览器直接访问。
- 拉起实例并挂载代码
multipass launch 24.04 -n webdev -c 2 -m 4G -d 20Gmultipass mount ~/projects/myapp webdev:/home/ubuntu/myapp- 一次安装常用工具(cloud-init 版)
将如下保存为
dev.yaml,然后新建一个“开发工具”实例(与 webdev 分开更干净):
# dev.yamlpackage_update: truepackages: [curl, git]runcmd: # 安装 Node.js(官方安装脚本示例) - "curl -fsSL https://deb.nodesource.com/setup_20.x | bash -" - "apt-get install -y nodejs" - "npm install -g pnpm"multipass launch 24.04 -n tool -c 2 -m 2G --cloud-init dev.yaml- 别名:宿主直接用实例工具
multipass alias tool:pnpm pnpm.toolmultipass alias tool:node node.toolpnpm.tool -vnode.tool -v- 运行开发服务并从宿主访问
在
webdev里起服务(确保进程监听0.0.0.0):
multipass exec webdev -- bash -lc 'cd ~/myapp && npm install && npm run dev -- --host 0.0.0.0 --port 5173'# 查 IPmultipass info webdev # 访问 http://<IPv4>:5173关于网络可达性的差异与桥接方案,见“网络与端口”章节参考链接。 ([Ask Ubuntu][10], [Discuss Kubernetes][12])
实例 B:Nginx 一键上线(cloud-init 全自动)
- cloud-init 文件(见上文“cloud-init 示例”)
- 启动并验证
multipass launch 24.04 -n web --cloud-init cloud-init.yaml -c 2 -m 2Gmultipass info web # 访问 http://<IPv4>进阶与日常维护
- 主机/实例间复制:大批量文件建议
mount;少量文件可transfer。 ([GitHub][8], [DEV Community][9]) - 主从多机/微集群:搭配 MicroK8s 在 Multipass 上快速起集群,官方教程提供了分步示例。 ([Ubuntu][19])
- primary 实例:部分命令会自动创建/使用名为
primary的默认实例(最新 LTS + 默认资源规格)。 ([Ubuntu Documentation][20]) - 查看/调整资源:
launch时用-c/-m/-d;已创建实例的调整方式与限制见“Modify an instance”。 ([Ubuntu Documentation][21]) - 命令全览:
multipass help或参考命令百科。 ([fig.io][22])
常见问题
Q1:默认资源是多少? A:默认一般为 1 vCPU / 1 GiB RAM / 5 GiB 磁盘(不同版本以文档为准)。 ([learn.arm.com][6])
Q2:删除和清理的区别?
A:multipass delete 只是把实例标记为待删除;真正回收磁盘需再 multipass purge。 ([BDRShield][23])
Q3:如何查看可用镜像?
A:multipass find(包含 LTS、开发版、云镜像标签等)。 ([Ubuntu Documentation][4])
Q4:如何备份/迁移? A:可用 Multipass 的 快照/回滚 功能管理实例状态;若需要跨机器迁移,可参考使用 snap 的 snapshot/import-snapshot/restore 方式迁移整个 Multipass 状态(社区经验帖)。请在生产前先做验证。 ([Ubuntu Documentation][18], [Ask Ubuntu][24])
结语
Multipass 用“容器般”的速度与简洁,把“完整 Ubuntu 虚机”放到你的桌面:
- 起机器只要一条
launch; - 自动配置交给 cloud-init;
- 跨机命令用 alias;
- 回滚试错靠 snapshot/restore。
如果你已经装好 Multipass,建议直接照着上面的 实例 A/B 动手跑一遍,基本就能形成自己的工作流了。
[1] Tutorial - Multipass - Ubuntu documentation
[2] Installing MicroK8s with Multipass
[3] How to set up the driver - Multipass documentation
[4] Command-line interface - Multipass
[5] multipass man
[7] multipass launch
[8] multipass for Windows 10 Home with Hyper-V enabled
[9] A Comprehensive Guide to Multipass: Simplifying Virtual ...
[10] network manager - How to bridge local LAN using Multipass
[11] networks - Multipass
[12] How to export microk8s ports to macOS host? - Discuss Kubernetes
[13] How to export multipass / microk8s ports to macOS host?
[14] Run cloud-init locally with multipass - Read the Docs
[15] Launch customized instances with Multipass and cloud-init
[16] alias - Multipass
[17] Multipass Command Examples - Create and Manage ...
[18] snapshot - Multipass
[19] How to build a highly available Kubernetes cluster with MicroK8s
[20] Use the primary instance - Multipass
[21] Modify an instance - Multipass
[22] multipass
[23] How to use Multipass on Windows Hyper-V - Part 40
[24] Import/Export VMs from Multipass - virtualization

