使用 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的主要内容,如果未能解决你的问题,请参考以下文章

使用 multipass 管理 Ubuntu VMs

使用 multipass 管理 Ubuntu VMs

使用 multipass 管理 Ubuntu VMs

使用 multipass 管理 Ubuntu VMs

使用 multipass 管理 Ubuntu VMs

基于Multipass(Ubuntu) 部署NFS网络文件系统