多通道虚拟机管理速查表:Ubuntu、Windows 与 macOS 指南

多阶段安装、设置和基本命令

目录

Multipass 是一个轻量级的虚拟机管理工具,使您能够轻松地在 Linux、Windows 和 macOS 上创建和管理 Ubuntu 云实例。

无论您是需要隔离环境的开发人员、测试配置的 DevOps 工程师,还是正在学习 Linux 的人,Multipass 都提供了一个简单的命令行界面,可快速启动 Ubuntu 虚拟机。

Multipass VM Manager Ubuntu

什么是 Multipass?

Multipass 是 Canonical 官方用于创建和管理 Ubuntu 虚拟机的工具。它被设计为简单、快速且跨平台,是需要在不同操作系统上保持一致 Ubuntu 环境的开发人员的绝佳选择。

主要功能

  • 跨平台:适用于 Linux、Windows 和 macOS
  • 轻量级:与传统虚拟机相比资源开销极小
  • 支持 cloud-init:使用 cloud-init 元数据配置虚拟机
  • 支持快照:创建和恢复虚拟机快照
  • 网络集成:主机与虚拟机之间轻松联网
  • SSH 访问:内置 SSH 密钥管理

最有用的命令

# 快速参考
multipass launch --name dev --cpus 2 --memory 4G --disk 20G
multipass shell dev
multipass mount ./project dev:/home/ubuntu/project
multipass snapshot dev before-changes
multipass restore dev before-changes
multipass delete dev
multipass purge

安装

Ubuntu/Linux

# 通过 snap 安装(推荐)
sudo snap install multipass

# 或通过 apt 安装
sudo apt update
sudo apt install multipass

Windows

  1. multipass.run 下载 Windows 安装程序
  2. 以管理员身份运行安装程序
  3. Multipass 默认使用 Hyper-V(Windows 10 Pro/Enterprise)或回退到 VirtualBox

macOS

# 通过 Homebrew 安装
brew install --cask multipass

# 或从 multipass.run 下载

基本使用

创建第一个虚拟机

# 使用默认设置创建虚拟机
multipass launch

# 使用特定名称创建虚拟机
multipass launch --name my-vm

# 使用特定 Ubuntu 版本创建虚拟机
multipass launch 22.04 --name ubuntu-22

# 使用自定义资源创建虚拟机
multipass launch --name dev-vm --cpus 2 --memory 4G --disk 20G

管理虚拟机

# 列出所有虚拟机
multipass list

# 启动虚拟机
multipass start my-vm

# 停止虚拟机
multipass stop my-vm

# 删除虚拟机
multipass delete my-vm
multipass purge  # 删除所有已删除的虚拟机

访问虚拟机

# 在虚拟机中打开 shell
multipass shell my-vm

# 在虚拟机中执行命令
multipass exec my-vm -- ls -la

# 在虚拟机之间复制文件
multipass transfer file.txt my-vm:/home/ubuntu/
multipass transfer my-vm:/home/ubuntu/file.txt ./

一旦进入 Multipass 虚拟机,您将拥有一个完整的 Ubuntu shell 环境。为了高效地进行命令行操作,请参考我们的 Bash 命令速查表,了解常用命令和快捷键。

Multipass 实例

Multipass 命令速查表

虚拟机管理命令

# 创建和启动
multipass launch                    # 创建默认虚拟机
multipass launch --name vm1        # 创建命名虚拟机
multipass launch 20.04 --name old  # 特定 Ubuntu 版本

# 资源分配
multipass launch --cpus 2 --memory 4G --disk 20G --name dev

# 虚拟机控制
multipass start vm1                # 启动虚拟机
multipass stop vm1                 # 停止虚拟机
multipass restart vm1               # 重启虚拟机
multipass suspend vm1              # 挂起虚拟机

# 信息
multipass list                     # 列出所有虚拟机
multipass info vm1                 # 虚拟机详情
multipass get local.privileged-mounts  # 检查挂载设置

文件操作

# 文件传输
multipass transfer file.txt vm1:/home/ubuntu/
multipass transfer vm1:/home/ubuntu/file.txt ./
multipass transfer --recursive ./folder vm1:/home/ubuntu/

# 挂载主机目录
multipass mount /host/path vm1:/vm/path
multipass umount vm1:/vm/path

网络配置

# 网络信息
multipass info vm1 | grep IPv4

# 端口转发(Windows/macOS)
multipass set local.port-forwarding=true
multipass restart vm1

快照和备份

# 创建快照
multipass snapshot vm1 snapshot1

# 恢复快照
multipass restore vm1 snapshot1

# 列出快照
multipass list --all

高级配置

cloud-init 集成 创建一个 cloud-config.yaml 文件:

#cloud-config
package_update: true
package_upgrade: true
packages:
  - docker.io
  - git
  - curl

users:
  - name: developer
    sudo: ALL=(ALL) NOPASSWD:ALL
    shell: /bin/bash
    ssh_authorized_keys:
      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC...
runcmd:
  - systemctl enable docker
  - systemctl start docker

使用 cloud-init 启动虚拟机:

multipass launch --cloud-init cloud-config.yaml --name configured-vm

自定义镜像

# 列出可用镜像
multipass find

# 使用特定镜像
multipass launch daily:22.04 --name daily-vm

与开发工具的集成

Docker 集成 Multipass 与 Docker 配合使用,非常适合容器化开发。您可以在 Multipass 虚拟机中运行 Docker,或使用 Multipass 创建用于 Docker 开发 的隔离环境。

开发环境 对于 Python 开发,您可以设置类似于 Python 虚拟环境 的隔离环境,但具有完整的操作系统隔离。对于 VS Code 用户,Multipass 虚拟机可以作为远程开发环境,与 VS Code 的 Dev Containers 相辅相成,适用于需要完整操作系统隔离的场景。

自托管应用 Multipass 非常适合在隔离环境中测试自托管应用,如 GiteaOllama。对于容器编排,您可以在 Multipass 虚拟机中运行 Kubernetes 集群,并使用我们的 Kubernetes 命令速查表 来管理容器化工作负载。

故障排除

常见问题

# 检查 Multipass 状态
multipass get local.driver

# 重置 Multipass
multipass purge
sudo snap restart multipass

# 检查虚拟机日志
multipass logs vm1

性能优化

# 启用特权挂载以提高性能
multipass set local.privileged-mounts=true

# 配置内存限制
multipass set local.memory=8G

与替代方案的比较

Multipass 与 Docker

  • Multipass:完整虚拟机,更适合操作系统级别的测试,资源消耗较大
  • Docker:容器,更高效,更适合应用部署

Multipass 与 VirtualBox/VMware

  • Multipass:命令行导向,支持 cloud-init,自动化更简单
  • VirtualBox/VMware:基于 GUI,配置选项更多,更适合桌面使用

Multipass 与 Proxmox

  • Multipass:轻量级,专注于单个虚拟机,适合开发环境
  • Proxmox:完整的虚拟化堆栈,更适合生产环境,具有高级功能如集群和高可用性

Multipass 与 Vagrant

  • MultipassUbuntu 专用,设置更简单,适合单个虚拟机场景
  • Vagrant:支持多提供者,配置复杂,更适合多虚拟机设置

最佳实践

  1. 资源管理:根据工作负载分配适当的 CPU 和内存
  2. 快照策略:在进行重大更改前创建快照
  3. 网络安全:为暴露的服务使用适当的防火墙规则
  4. 备份策略:定期备份重要虚拟机数据
  5. 清理:删除未使用的虚拟机以释放磁盘空间

何时使用 Multipass

选择 Multipass 的情况:

  • 您需要完整的 Ubuntu 虚拟机进行开发
  • 您希望使用简单的命令行管理虚拟机
  • 您在不同操作系统上工作
  • 您需要 cloud-init 配置支持
  • 您希望在隔离环境中测试自托管应用

考虑替代方案的情况:

  • 您需要最大性能(使用 Docker 容器)
  • 您需要复杂的多虚拟机设置(使用 Vagrant)
  • 您需要基于 GUI 的管理(使用 VirtualBox/VMware)

Multipass 在跨平台提供简单、一致的 Ubuntu 开发环境方面表现出色,是需要可靠虚拟机管理但又不想使用传统虚拟化工具的开发人员的绝佳选择。

有用的链接