随着电脑性能的飞速提升,虚拟机软件也早已成为了我们平日生产测试系统经常用到的高频软件。

但是除了虚拟机环境的搭建之外,虚拟客户机的创建和配置的复杂性和繁琐性也是一直以来打击着萌新们的幼小心灵。

毕竟熟练掌握客户机的创建和配置是需要投入时间和精力学习的,而我们又可能没有太多的时间去搞定各种各样的不同场景,有没有可以快速创建客户机、快速展开我们所希望的测试工作呢?

世上无难事,只怕有心人,你别说,还真有!


不知道小伙伴们还记不记得以前我给大家分享的一篇关于 Quickemu 的文章,就是介绍快速获取虚拟机镜像,并且快速创建虚拟机系统的这么一个解决方案。

不过嘛,Quickemu 是建立在 KVM 之上的,那必须是围着 Linux 系统转啊!

而且好像 Qemu 还要 6.0 版本以上,需要手动编译安装,这 KVM 环境搭建就够费时费力了,荫新们肯定直呼做不到啊!

嘿嘿,别着急!

Linux 不行,那我们到 Windows 上想想办法,有可能吗?

当然有可能了,要不我在这儿废什么话呢,哈哈!


今天要给大家介绍的,就是名为 Multipass 的一款轻量型虚拟机管理器。

官网:https://multipass.run/


这个 Multipass 有什么特点?

你瞧它的头衔,我们把修饰的定语给它拿掉,就剩下“虚拟机管理器”这几个字。

哈,瞬间明白了,它其实只是个管理器,并不是虚拟软件,其本质上和 Quickemu 差不多。

但是它比 Quickemu 有更多好处,它可以在 LinuxWindowsmacOS 多个平台上跑。


哎,小伙伴们一看有 Windows ,嘿嘿,这下有门了!

没错哈,需要进一步说明的是,它在不同平台上跑的时候啊,它管理的虚拟软件还不一样。

刚才说了嘛,它是个管理器,并不是虚拟软件本身。

那它在不同平台上都是怎么管的呢?


很简单,在 Linux 上它管 KVM ,在 Windows 上它管 Hyper-VVirtualBox ,还有在 macOS 上它管 HyperKit

管得还真不少,但仔细一看你也能明白,在哪个不同平台就管理哪个不同的虚拟软件,都是与平台相对应的。

那么我们就很清楚了,只要我们在 Windows 上安装有 Hyper-VVirtualBox ,再通过 Multipass 来管理它们就可以达到我们快速创建和管理虚拟机的目的了。


然而 Hyper-V 对于荫新们并不常用,复杂度较高,体积也很庞大,似乎可能还要购买 License 。

而相对之下,VirtualBox 就比较亲民一些,免费开源,安装使用起来也很方便,因此接下来我们就以 VirtualBox 为例,为大家介绍 Multipass 的简单用法,以此我们可以类推到其他系统平台上。


准备工作

假定我们已经拥有了一台 Windows 10 系统,上面已经安装好了 VirtualBox

我们到官网将 Windows 版的 Multipass 下载下来。

下载链接:https://multipass.run/download/windows


安装 Multipass

下载完成之后我们就可以开始安装 Multipass 了。


接受许可,继续。


选择虚拟引擎,这里有两个选择,前面我们说过了,在这儿选择 Oracle VM VirtualBox


选择将 Multipass 加到哪个路径环境变量 PATH 中,这样做的好处就是你可以在任意路径下调用 Multipass 命令。

在这儿我们选择针对所有用户都有效。


指定安装目录,默认就可以了。


选择需要安装的组件,应该都选上,反正也占不了多大地方哈。

第一项是 Multipass 的命令行及图形程序,第二项是通知栏图标菜单,第三项是后台服务。


安装程序开始解压缩并拷贝文件。


如果你还没有安装 VirtualBox ,那么它会检查并提示我们。


最后完成安装,Windows 下安装非常的简单啊!


使用 Multipass

打开 Multipass ,我们可以在系统通知栏内看到它的图标。


用鼠标右键点击图标,在弹出的菜单中只有寥寥几个选项。

我们先看看关于 About 一项,能看到 Multipass 的版本,以及可以设定是否跟随系统启动而自动登录。


这里简单解释一下 multipassmultipassd 的区别。

后面多了一个 d 是指 daemon ,意思是后台服务,当我们需要它以后台服务的形式运行在系统中时就会用到 multipassd 了。


接下来我们尝试简单地运用一下 Multipass 来加深对它的理解。

右键点击图标,选择 Open Shell


之后会打开一个 PowerShell 窗口,我们就可以在这个窗口中执行 multipass 命令了。

不过有时也可能会出现如下图那样的提示,询问用户是否可以发送匿名数据来帮助 Multipass 开发者。


说实话,我等小白还是不要掺和大神们的事了吧,我选择直接关闭了窗口,哈哈!

对于我来说,比较通常的做法就是自己打开一个 PowerShell 窗口。

由于之前我们已经将 multipass 命令放到了环境变量 PATH 中了,因此打开 PowerShell 后就可以直接输入命令执行。


我们尝试输出当前 Multipass 的版本号。

multipass version
 


直接输入 multipass 并且不带任何参数可以查看命令帮助信息。

multipass -?, -h, --help
 


我们在前面曾说过,Multipass 是个管理器,它可以提供快速部署虚拟机的镜像,那我们来看看它都有哪些可用的镜像吧。

输入以下命令,查看当前提供的镜像列表。

multipass find
 

输出结果:

Image                       Aliases           Version          Description
core                        core16            20200818         Ubuntu Core 16
core18                                        20211124         Ubuntu Core 18
18.04                       bionic            20220104         Ubuntu 18.04 LTS
20.04                       focal,lts         20220111         Ubuntu 20.04 LTS
21.04                       hirsute           20220106         Ubuntu 21.04
21.10                       impish            20220111         Ubuntu 21.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
anbox-cloud-appliance                         latest           Anbox Cloud Appliance
minikube                                      latest           minikube is local Kubernetes
 


可以看到,Multipass 提供的都是 Ubuntu 现成的各种版本镜像,因此它能够在数分钟之内快速完成下载并将其实例化。

如果不刻意指定具体哪个版本镜像的话,默认情况下 Multipass 将获取当前最新的 LTS 版本镜像。


关于镜像 image 和实例 instance 的区分,我简单地科普下哈!

我们可以简单地理解为,镜像是一种模板,作为参照物用来生成实例,模板的内容固定我们不能修改变动它。

而实例则是我们实际操作的对象,它以镜像为模板生成实例,一个或多个实例由一个镜像生成,然后我们对实例进行修改操作。

实际上如果小伙伴们学过 Docker 的话,那么对于这些概念甚至是接下来的命令操作可以说是一点也不陌生,简直是一模一样啊!


好了,我们接着看,查看当前我们拥有的实例。

multipass list
 

我们还没有下载镜像,自然还没有任何实例存在,别着急,一会儿我们就下载一个试试。


最简单的,我们就用默认的镜像来做实验吧,只要给个实例名称就可以了。

multipass launch --name <实例名称>
 

比如,输出一个名为 sysadm 的实例。

multipass launch --name sysadm
 


除了名字,我们没有加任何参数,因此它会默认使用 LTS 版本镜像。

如果镜像还未下载,那么 launch 命令会先下载镜像,尔后启动运行实例。

如果镜像已经下载过了,那么 launch 命令就直接启动实例。


镜像一旦下载完成,Multipass 就会按镜像生成实例,接着便会启动这个实例。


在此期间有可能我们会遇到一些小问题。

比如,它会提示没有开启 Hyper-V 功能。


这是什么鬼,说好的 VirtualBox ,为啥会提示 Hyper-V 呢?

理由是我们还需要手动指定一下,让 Multipass 去找 VirtualBox 而不是 Hyper-V

喵了个咪,明明安装的时候说好的呀,真是有够笨的啊!

好吧,那我们就指定一下吧。

multipass set local.driver-virtualbox
 


如此一来,我们就可以安心让 Multipass 启动 VirtualBox 了。

不过即使如此,也有可能再次冒出来个不省心的问题。

就像下面这样,似乎是虚拟化功能未开启,记得要在 BIOS 里开启虚拟化功能哦!


好了,前面 launch 命令已经将镜像下载下来并成功启动了实例,那我们就可以来看看它的状态。

multipass list
 

这次终于看到了,镜像是 Ubuntu 20.04 LTS ,实例名是 sysadm ,当前正在运行中。


想要查看实例的相关信息,可以用 info 参数加上实例名称。

multipass info <实例名称>
 

比如,查看实例名为 sysadm 的信息。

multipass info sysadm
 


执行实例内部命令,使用 exec 参数。

# 执行不带参数的命令
multipass exec <实例名称> <command>
例:multipass exec vm01 pwd

# 执行带参数的命令
multipass exec <实例名称> -- <command> <arguments>
例:multipass exec vm01 -- uname -a
 


关于 launch 参数实际上还有更具体的用法,大概有以下几种附加选项参数 [options] 可以用来指定虚拟机配置。

multipass launch [options]

-n, --name: 名称
-c, --cpus: cpu核心数, 默认: 1
-m, --mem: 内存大小, 默认: 1G
-d, --disk: 硬盘大小, 默认: 5G
 


那么命令大概可以这样写。

multipass launch --name <实例名称> --cpus 1 --mem 1G --disk 10G
 

参数简写也可以是这样。

multipass launch -n <实例名称> -c 1 -m 1G -d 10G
 


另外如果我们想指定镜像,那么可以在后面加上 <image> 参数。

multipass launch [options] <image>
 

比如,下载并启动镜像为 Ubuntu 21.10 的实例,并命名为 sysadm

multipass launch -n sysadm "21.10"
 


实例的启动停止和删除释放命令也很简单。

# 启动实例
multipass start <实例名称>

# 停止实例
multipass stop <实例名称>

# 删除实例(删除后,还会存在)
multipass delete <实例名称>

# 释放实例(彻底删除)
multipass purge <实例名称>
 


Multipass 还能通过 --cloud-init 参数来进行实例启动初始化配置。

multipass launch -n <实例名称> --cloud-init cloud-config.yaml
 

其中 yaml 配置文件必须以 #clound-config 开头,后面再写入相应的命令。

由于内容繁多比较复杂,所以请小伙伴们自行参考官网文档实例吧。

https://cloudinit.readthedocs.io/en/latest/topics/examples.html


还有很多其他相关的操作命令,在这儿我们就不一一展开讲解了。

有兴趣的小伙伴可以到官方文档中查看。

https://multipass.run/docs/


写在最后

从前面的操作体验中我相信小伙伴们也能感觉到,这个 Multipass 的用法就和 Docker 容器非常接近,因此熟悉 Docker 那一套的小伙伴肯定能快速上手。

Multipass 的特点就是通过镜像快速部署虚拟机,即使你对于虚拟机的搭建配置了如指掌,也能很大程序上减轻你的负担,将更多的时间和精力用于做其他更有意义的事情。


此外 MultipassCanonical 公司开发,虽说是款非常不错的管理器软件,但同时它提供的镜像也仅限于 Ubuntu ,这是它的一个不大不小的局限。

如果你是大量部署 Ubuntu 并将其用于测试的重度用户的话,那 Multipass 可就派上大用场了。

但要是还想兼容其他不同平台版本的 Linux ,那么只能说有些遗憾了,也不知道 Multipass 将来会不会考虑将其他一些同样优秀的 Linux 发行版也纳入其中。

好了,今天关于 Multipass 的分享就到这里吧,希望你有所收获,我们下期再见啦!


扫码关注@网管小贾,阅读更多

网管小贾的博客 / www.sysadm.cc



暂无评论

登录并提交评论

© 2020-present 网管小贾 | 微信公众号 @网管小贾
许可协议:CC-BY-NC 4.0 | 转载文章请注明作者出处及相关链接