Multipass 使用教程

Multipass 使用教程

tiansiyuantiansiyuan
1 次阅读
Multipass
文章目录

下面是一篇面向实战、逐步推进的 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 等),可查询 / 切换:

bash
multipass get local.drivermultipass set local.driver=<driver>    # 例如 hyperv / qemu / lxd(因平台而异)

驱动的选择与配置详见官方“Set up the driver”。 ([Ubuntu Documentation][3])


常用命令速查

bash
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])


网络与端口:如何从宿主机访问实例

  1. multipass info <name> 查看实例的私网 IPv4。在多数平台上,宿主机可直接访问该 IP 的服务(如 http://<实例IP>:80)。 ([learn.arm.com][6])

  2. 需要更灵活的网络(如桥接到物理网)时,可先切换到支持的驱动(例如 LXD),再在 launch 时指定 --network <iface>

    bash
    multipass set local.driver=lxdmultipass launch -n vm01 --network enp3s0

    具体能力因平台/驱动而异,实践经验帖可参考。 ([Ask Ubuntu][10])

  3. 可用网络列表:

    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 并写入主页

yaml
# 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 nginx
bash
multipass 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):在宿主直接调用实例里的命令

你可以给“实例内的某个命令”创建宿主侧别名:

bash
multipass alias <实例名>:<命令> <别名># 例:把 dev 实例里的 `npm` 暴露成宿主上的 npm-devmultipass alias dev:npm npm-devnpm-dev -v

别名语法与完整操作见官方 alias 文档与教程;示例语法也可参考第三方命令汇总。 ([Ubuntu Documentation][16], [binarytides.com][17])


快照 / 回滚(snapshot / restore)

当你要“可逆地”尝试系统升级或大改动时,非常有用:

bash
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,主机编辑代码、实例内跑服务,宿主浏览器直接访问。

  1. 拉起实例并挂载代码
bash
multipass launch 24.04 -n webdev -c 2 -m 4G -d 20Gmultipass mount ~/projects/myapp webdev:/home/ubuntu/myapp
  1. 一次安装常用工具(cloud-init 版) 将如下保存为 dev.yaml,然后新建一个“开发工具”实例(与 webdev 分开更干净):
yaml
# 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"
bash
multipass launch 24.04 -n tool -c 2 -m 2G --cloud-init dev.yaml
  1. 别名:宿主直接用实例工具
bash
multipass alias tool:pnpm pnpm.toolmultipass alias tool:node node.toolpnpm.tool -vnode.tool -v
  1. 运行开发服务并从宿主访问webdev 里起服务(确保进程监听 0.0.0.0):
bash
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 全自动)

  1. cloud-init 文件(见上文“cloud-init 示例”)
  2. 启动并验证
bash
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

[6] Multipass: Install Guide

[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

图片

评论区0

还没有评论,快来抢沙发吧~

登录 后可发表评论