使用 multipass 管理 Ubuntu VMs
Posted 神神的蜗牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 multipass 管理 Ubuntu VMs相关的知识,希望对你有一定的参考价值。
Multipass
是一个轻量级的 ubuntu
虚拟实例管理器,可以很快速的创建一个新的虚拟实例用来做开发测试很方便。
下载地址为 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 的管理工具中执行.
正确方法:
- 开始菜单
- 所有应用
- Windows 管理工具
- Hyper-V 管理工具
- 选中虚拟机实例
- 右侧下方
移动
按钮- 选择移动选项
- 将虚拟机的所有数据移动到一个位置
移动后, 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的主要内容,如果未能解决你的问题,请参考以下文章