使用 multipass 管理 Ubuntu VMs

Posted 神神的蜗牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 multipass 管理 Ubuntu VMs相关的知识,希望对你有一定的参考价值。

Multipass 是一个轻量级的 ubuntu 虚拟实例管理器,可以很快速的创建一个新的虚拟实例用来做开发测试很方便。

Multipass官网
Github下载页面

下载地址为 github 提供, 可能很慢或打不开, 可以复制页面上的的下载链接地址后使用下方代理地址

尝试通过Github代理下载

https://ghproxy.com/https://github.com/CanonicalLtd/multipass/releases/download/v1.6.2/multipass-1.6.2%2Bwin-win64.exe

在 windows 上安装: 官方文档

查看版本

multipass version

查看帮助

multipass help 

查看镜像列表:

# 所有镜像
multipass find
PS C:\\Users\\52361> multipass find
Image                       Aliases           Version          Description
core                        core16            20200818         Ubuntu Core 16
core18                                        20200812         Ubuntu Core 18
snapcraft:core18                              20201111         Snapcraft builder for Core 18
snapcraft:core20                              20201111         Snapcraft builder for Core 20
18.04                       bionic            20210604         Ubuntu 18.04 LTS
20.04                       focal,lts         20210622         Ubuntu 20.04 LTS
20.10                       groovy            20210622.1       Ubuntu 20.10
appliance:adguard-home                        20200812         Ubuntu AdGuard Home Appliance
appliance:mosquitto                           20200812         Ubuntu Mosquitto Appliance
appliance:nextcloud                           20200812         Ubuntu Nextcloud Appliance
appliance:openhab                             20200812         Ubuntu openHAB Home Appliance
appliance:plexmediaserver                     20200812         Ubuntu Plex Media Server Appliance

历史版本镜像地址

安装并启动一个实例, 当前仍然不支持手动指定本地镜像, 只能自动从网上下载。

如果不指定实例名称 --name or -n 则默认会随机生成一个名字, 若指定为 primary 则表示为默认实例, 使用其他命令时也可以省略名称,默认实例名称也可以通过 multipass set 命令更改。

multipass launch --name zzvm
multipass launch -n zzvm -c 2 -m 2G -d 40G
# 使用指定镜像版本 20.04 来新建实例
multipass launch -n zzvm -c 2 -m 2G -d 40G 20.04
# 可以指定名称为 primary 创建默认实例,使用默认实例时,大部分命令可以省略名称
multipass launch -n primary -c 2 -m 2G -d 40G 20.04
-n, --name: 名称
-c, --cpus: cpu核心数, 默认: 1
-m, --mem:  内存大小,  默认: 1G
-d, --disk: 硬盘大小,  默认: 5G

支持 --cloud-init 参数指定容器初始化命令,具体配置可以参考该文章:
Cloud config examples

安装时如果被中断, 重装会出现错误 launch failed: instance "primary" is being prepared

需要重启 multipassd 服务即可, 注意先将其他实例正常关闭,
然后再运行 services.msc 或 任务管理器的 服务面板 中找到名为 Multipass 的服务重新启动.
如果无法停止服务, 则可强行关闭 multipassd.exe 进程, 然后再启动服务即可.

实例位置, 下方的配置文件修改参数不一定有用, 可以使用对应的虚拟机管理器进行操作

在 windows 下的默认镜像文件夹为:
C:\\Windows\\System32\\config\\systemprofile\\AppData\\Local\\multipassd\\cache\\vault\\images
镜像配置文件路径:
C:\\Windows\\System32\\config\\systemprofile\\AppData\\Local\\multipassd\\cache\\vault\\multipassd-image-records.json

初次安装后, 可以移动镜像文件到其他分区节省C盘容量, 然后修改配置文件中的 path 镜像文件地址即可.

注意: 修改前先停止 multipass 服务, 修改完后再启动服务.

在 windows 下的实例的默认位置为:
C:\\Windows\\System32\\config\\systemprofile\\AppData\\Roaming\\multipassd\\vault\\instances
实例配置文件路径:
C:\\Windows\\System32\\config\\systemprofile\\AppData\\Roaming\\multipassd\\vault\\multipassd-image-records.json

因为默认镜像和实例都存储在 C 盘, 剩余容量可能扛不住, 得移动到其他分区, 有两种方法:
方法一:

默认安装时使用的是 Hyper-V 虚拟机, 对虚拟机实例的其他操作可以在 Hyper-V 的管理工具中执行.

正确方法:

  1. 开始菜单
  2. 所有应用
  3. Windows 管理工具
  4. Hyper-V 管理工具
  5. 选中虚拟机实例
  6. 右侧下方 移动 按钮
  7. 选择移动选项
  8. 将虚拟机的所有数据移动到一个位置

移动后, multipass 的删除操作将不能删除虚拟机实例本体, 只会删除 C 盘目录下的实例配置文件
镜像文件, 需要手动删除或移动, 不会影响已安装好的实例.

方法二: 比较麻烦,问题还多,仅供参考.

先停止 multipassd 服务, 移动 instances 目录下该实例名的整个文件夹,
然后修改实例配置文件的 path 路径,
打开 Hyper-V 管理器, 设置 -> IDE控制器0 -> 硬盘驱动器 -> 修改虚拟磁盘路径为新路径.
打开新路径中的 .vhdx 实例虚拟磁盘文件的属性面板, 查看安全选项, 会出现个未知帐户,
将该帐户的权限设置为完全控制, 在启动服务即可.

使用指定实例运行命令

multipass exec zzvm -- lsb_release -a
# 默认用户名为 ubuntu
multipass exec zzvm -- whoami
# ubuntu

实例列表

multipass list

实例停止|启动

multipass stop  zzvm
multipass start zzvm
multipass stop  --all
multipass start --all

登录实例

# 不指定则使用默认的 primary 实例
multipass shell
multipass shell zzvm

实例挂起

multipass suspend zzvm

实例:恢复|删除|清理

multipass recover zzvm
multipass delete  zzvm
multipass delete  --all
# 永久彻底清理所有已删除实例
multipass purge

查看实例信息

multipass info zzvm

绑定一个宿主机目录到实例

multipass mount D:\\shared zzvm:/shared

解除绑定

multipass unmount zzvm

宿主机与实例传输文件, 同名文件将会直接覆盖,

  • 默认用户为 ubuntu 所以要注意可写权限
  • 宿主传入实例时宿主可以用盘符 C:/ D:/ 之类得开头, 但传出到宿主时不行, 必须先 cd d:/ 进入到目录下使用相对路径
# 宿主机传入实例
multipass transfer D:/tmp/test.txt zzvm:/home/ubuntu/test.txt
# 实例传到宿主机
cd d:/tmp
multipass transfer zzvm:/home/ubuntu/test.txt ./test2.txt

以上是关于使用 multipass 管理 Ubuntu VMs的主要内容,如果未能解决你的问题,请参考以下文章