简介
Multipass 是一个轻量虚拟机管理器,是由 Ubuntu
运营公司 Canonical
所推出的开源项目。运行环境支持 Linux
、Windows
、macOS
。在不同的操作系统上,使用的是不同的虚拟化技术。在 Linux
上使用的是 KVM
、Window
上使用 Hyper-V
、macOS
中使用 HyperKit
以最小开销运行 VM
,支持在笔记本模拟小型云。
同时,Multipass
提供了一个命令行界面来启动和管理 Linux
实例。下载一个全新的镜像需要几秒钟的时间,并且在几分钟内就可以启动并运行 VM
。
打开任意 MacOS 命令行,键入以下命令查看版本
1 | # on your MacBook |
如果提示没有,则使用 brew
(一个软件包管理工具)安装 Multipass
:
1 | # on your MacBook |
创建 Ubuntu 虚拟机
首先,在命令行键入以下指令查找可供下载的 Ubuntu
镜像
PS: 目前只支持 Ubuntu
1 | # on your MacBook |
参数说明:
- image:镜像
- Aliases: 别名
- version:版本
- Description:描述
下载最新版本的 Ubuntu
镜像运行,第一次创建时需要下载 Ubuntu
镜像,网络通畅的情况下,稍等片刻即可。
1 | # on your MacBook |
自定义配置创建可以参考如下方式:
- -n, –name: 名称
- -c, –cpus: cpu 核心数, 默认: 1
- -m, –mem: 内存大小, 默认: 1G
- -d, –disk: 硬盘大小, 默认: 5G
其他操作
查看正在运行的 VM 列表:
1 | # on your MacBook |
这条指令可以看到虚拟机详细信息,名称,状态,地址,镜像名称等信息。
外部操作 VM
通过 multipass exec
命令在实例内执行给定的命令。第一个参数是运行命令的实例,也就是 k3s
我们通过 exec
命令,就可以在外部操作刚刚创建的虚拟机,例如查看内部所处的目录,执行 pwd
命令
1 | # on your MacBook |
查看 VM 信息
通过 multipass info
命令,即可查看当前运行的虚拟机信息
1 | # on your MacBook |
登录虚拟机
通过 multipass shell
命令,即可进入到虚拟机内部
1 | # on your MacBook |
运行后的结果如下所示,可以看到目前虚拟机的一些系统配置信息,以及内存和磁盘的使用情况
挂载数据卷
multipass
还提供和 Docker
一样的挂载数据卷的功能,能够与外部宿主机的文件保持同步。
multipass mount 宿主机目录 实例名: 虚拟机目录
1 | # on your MacBook |
挂载完成后,可以使用 multipass info
,查看是否挂载成功:
1 | # on your MacBook |
卸载数据卷
如果以后不需要用到挂载了,可以使用 unmount
命令卸载
$ multipass umount 容器名
1 | # on your MacBook |
传输文件
除了使用上述的 mount
挂载卷的方式实现文件的交互,同时还可以通过 transfer
命令,将宿主机的文件,发送到虚拟机内部
$ multipass transfer 主机文件 容器名: 容器目录
例如,将 hello.txt 发送到 VM
1 | # on your MacBook |
删除和释放实例
为了保持开发环境和线上环境一致性 同时节省部署时间 Multipass
给我们提供了 --cloud-init
选项进行容器启动初始化配置:
1 | # on your MacBook |
上面 config.yaml
则是容器的初始化配置文件,我们想在初始化容器的时候,自动下载安装 Node.js
,内容如下:
1 | runcmd: |
runcmd
可以指定容器首次启动
时运行的命令
凡是用户自定义的 cloud-init 的配置文件, 必须以 #cloud-config 开头,这是 cloud-init 识别它的方式。
yaml
配置文件可以参考下面的文章
更多关于 Multipass
的高阶的技巧,欢迎访问 multipass 官方文档。
以上。