Multipass

Multipass是Canonical公司(Ubuntu)开发的基于不同操作系统内建原生Hypervisor实现的工作站(Workstation) mini-cloud。由于Windows(Hyper-V),macOS( hyperkit )和Linux( KVM Atlas )都原生支持 hypervisor ,这样通过 multipass shell 命令就能够在一个shell中实现创建运行Ubuntu虚拟机。

这是一种快速部署Ubuntu开发测试环境的便捷方法,并且和其他云上运行一样,支持通过 cloud-init 进行实例初始化 ( multipass launch --cloud-init )。

Multipass还支持卷挂载( multipass mount ),以便在host主机和虚拟机实例之间复制数据( multipass transfer )

安装Multipass

macOS

在macOS平台,默认的后端是 hyperkit ,需要 macOS Yosemite (10.10.3)以上版本并且需要安装在2010以后生产的Mac设备。如果硬件和软件条件不满足,则可以使用VirtualBox作为虚拟化。

安装的方法有两种:

通过 brew 安装也可以卸载:

$ brew cask uninstall multipass
# or
$ brew cask zap multipass # to destroy all data, too

启动Multipass

  • 启动新实例

multipass launch 命令没有renew参数就会启动一个基于默认镜像的运行实例,使用一个随机生成的名字:

multipass launch

可以指定启动实例名字( -n, --name <name> ),分配cpu数量( -c, --cpus <cpus> 默认是1),设置磁盘容量( -d, --disk <disk> 默认5G,最小512M),设置内存分配( -m, --mem <mem> 最小128M,默认1G),并且可以指定 cloud-init

multipass launch -c 2 -d 12G -m 2G -n devstack

备注

multipass launch 命令会从Ubuntu网站下载镜像,但是ubuntu的官方服务器在国内访问很慢(移动固网),经常会报错:

launch failed: failed to download from 'http://cloud-images.ubuntu.com/releases/server/releases/bionic/release-20200129.1/ubuntu-18.04-server-cloudimg-amd64.img': Network timeout

Ubuntu cloud-image网站 提供了Ubuntu官方镜像下载,对于难以直接launch的镜像(由于网络原因),可以通过海外虚拟机预先下载再传回自己的服务器。

  • 进入新实例shell:

    multipass shell
    

参考