总目录
1. 概览
2. 教程
3. 使用指引
3.1 安装Multipass - 基于Linux / 基于macOS / 基于Windows
3.2 管理实例 - 创建实例 / 修改实例 / 使用实例 / 使用实例命令别名 / 与实例共享数据 / 移除实例
3.3 管理Multipass - 设置驱动 👈 / 使用Multipass服务授权代理 / 远程使用Multipass / 提高挂载性能 / 使用Packer打包Multipass镜像 / 设置图像界面 / 使用不同的macOS终端 / 配置Multipass外部储存位置
3.4 问题排查 - 连接日志 / 网络问题处理
如何设置驱动
也见: Driver
这篇文档教授了如何选取, 设置并管理Multipass后台的驱动. Multipass已经有比较灵活的默认设置了, 所以这只是一个可选步骤.
内容:
Linux: 使用libvirt
Multipass在Linux上默认使用qemu
驱动. 如果在VM启动后, 你想要更多的控制权, 你也可以使用试验阶段的libvirt
驱动. 该部分会教你如何使用.
安装libvirt
执行下面命令安装libvirt:
# 需要根据你的发行版使用同等命令
$ sudo apt install libvirt-daemon-system
切换Multipass驱动到libvirt
也见: stop, local.driver
首先, 允许Multipass使用本地libvirt:
# 连接到libvirt接口/插件
$ snap connect multipass:libvirt
然后, 切换Multipass驱动到libvirt,运行:
# 首先你得停止所有实例
$ multipass stop --all
# 然后让Multipass使用libvirt
$ sudo multipass set local.driver=libvirt
你所有的实例都会被迁移并且可以直接使用.
ℹ️ 你仍然可以使用
multipass
代理和托盘图表(tray icon), 并且任何你在libvirt所作的配置修改都是永久性的. 尽管他们并不会在Multipass命令(例如multipas info
)中显示
使用libvirt查看Multipass实例
你可以通过2种方式用libvirt查看实例, 使用virsh
CLI或者是virt-manager
GUI
使用virsh
CLI, 需要启动实例, 然后执行virsh list
(命令参考见man virsh):
$ virsh list
ID Name State
-------------------------------
1 unaffected-gyrfalcon running
另一可选方案, 使用virt manager
GUI,…
切回默认驱动
也见: stop, local.driver
执行下面命令切回默认的qemu
驱动:
# 再次停止所有实例
$ multipass stop --all
# 切回qemu驱动
$ sudo multipass set local.driver=qemu
这里也是, 现存实例都会被迁移.
ℹ️ 这会让你丢失你在libvirt上所作的任何定制改动.
macOS: 使用VirtualBox
Multipass在Intel macOS上默认使用hyperkit
驱动, M1 macOS默认使用qemu
驱动. 然而, 一个可选项是使用VirtualBox.
切换Multipass驱动到VirtualBox (macOS)
也见: stop, local.driver
执行下面命令切换Multipass驱动到VirtualBox:
$ sudo multipass set local.driver=virtualbox
此后, 所有使用multipass launch
启动的实例都会在后台使用VirtualBox.
使用VirtualBox查看Multipass实例
Multipass会以root
身份运行, 所以如果需要查看VirtualBox中的实例, 或者通过VBoxManage
命令, 你也需要让他们以root
身份运行. 运行下面命令查看VirtualBox中的实例:
$ sudo VirtualBox
并且, 需要在命令行列出实例的话, 执行:
$ sudo VBoxManage list vms
"primary" {395d5300-557d-4640-a43a-48100b10e098}
ℹ️ 你仍然可以使用
multipass
代理和系统菜单图表(system menu icon), 并且任何你在VirtualBox所作的配置修改都是永久性的. 尽管他们并不会在Multipass命令(例如multipas info
)中显示
使用VirtualBox设置Multipass实例端口转发
为了让你主机上实例中运行的服务暴露出来, 你可以使用VirtualBox的端口转发规则, 例如:
$ sudo VBoxManage controlvm "primary" natpf1 "myservice,tcp,,8080,,8081"
然后你可以打开,例如, [http://localhost:8081]/(http://localhost:8081), 在实例中端口8080运行的服务就会暴露出来.
使用VirtualBox设置Multipass实例网络桥接
一个经常被关注的Multipass点就是网络桥接. 你可以给实例添加第二个网络接口, 并将其暴露在你的物理网络中.
首先, 停止实例:
$ multipass stop primary
现在找到你想要桥接的网络接口(在第二个冒号后面找你想要的字符标识):
$ VBoxManage list bridgedifs | grep ^Name
Name: en0: Ethernet
Name: en1: Wi-Fi (AirPort)
Name: en2: Thunderbolt 1
Name: en3: Thunderbolt 2
...
最后, 让VirtualBox将第二个接口作为"父级"使用(更多关于桥接的信息参见 VirtualBox主题文档:
# 别碰 --nic1, 因为Multipass正在使用它
$ sudo VBoxManage modifyvm primary --nic2 bridged --bridgeadapter2 en0
你可以再次重启实例, 找到新接口的名称:
$ multipass start primary
$ multipass exec primary ip link | grep DOWN
3: enp0s8: mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
并配置新接口 – Ubuntu使用netplan处理:
$ multipass exec -- primary sudo bash -c "cat > /etc/netplan/60-bridge-yaml" <<EOF
network:
ehernets:
enp0s8: # 这就是上面的接口名称
dhcp4: true
dhcp4-overrides: # 这是必须的
route-metric: 200 # 默认网关给第一个接口保留
version: 2
EOF
$ multipass exec primary sudo netplan apply
最后, 找到鹿由给你的实例IP:
$ multipas exec primary ip address show dev enp0s8 up
3: enp0s8: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:2a:5f:55 brd ff:ff:ff:ff:ff:ff
inet 10.2.0.39/24 brd 10.2.0.255 scope global dynamic enp0s8
valid_lft 86119sec preferred_lft 86119sec
inet6 fe80::a00:27ff:fe2a:5f55/64 scope link
valid_lft forever preferred_lft forever
所有实例中的任务现在应该都可以通过物理网络路径 http://<ip>/使用
切回默认驱动
也见: stop, local.driver
如果你想切回默认驱动,运行:
$ sudo multipass set local.driver=hyperkit
使用VirtualBox创建的实例无法转移, 但是你随时可以回来找到他们.
Windows: use VirtualBox
Multipass在Windows上默认使用hyperv
驱动. 然而, 如果你想(或必须), 你可以将Multipass使用的虚拟机监视器(hypervisor)换为VirtualBox.
Install VirtualBox
如果你还没安装, 就先安装VirtualBox. 你会发现你需要以管理员身份运行VirtualBox安装包.
切换Multipass驱动到VirtualBox
也见: stop, local.driver
你可以让Multipass使用它(也需要管理员权限):
PS> multipass set local.driver=virtualbox
此后, 所有multipass launch
启动的实例在后台都会使用VirtualBox.
使用VirtualBox查看Multipass实例
Multipass会以系统身份运行, 所以如果需要查看VirtualBox中的实例, 或者通过VBoxManage
命令, 你必须通过PsExec -s运行. 下载并解压下载文件夹的PSTools.zip, 然后在管理员权限的PowerShell, 运行:
PS> & $env:USERPROFILE\Downloads\PSTools\PsExec.exe -s -i $env:VBOX_MSI_INSTALL_PATH\VirtualBox.exe
在命令行列出实例:
PS> & $env:USERPROFILE\Downloads\PSTools\PsExec.exe -s $env:VBOX_MSI_INSTALL_PATH\VBoxManage.exe list vms
"primary" {05a04fa0-8caf-4c35-9d21-ceddfe031e6f}
ℹ️ 你仍然可以使用
multipass
代理和系统菜单图表(system menu icon), 并且任何你在VirtualBox所作的配置修改都是永久性的. 尽管他们并不会在Multipass命令(例如multipas info
)中显示
使用VirtualBox设置Multipass实例端口转发
为了让你主机上实例中运行的服务暴露出来, 你可以使用VirtualBox的端口转发规则, 例如:
PS> & $env:USERPROFILE\Downloads\PSTools\PsExec.exe -s $env:VBOX_MSI_INSTALL_PATH\VBoxManage.exe controlvm "primary" natpf1 "myservice,tcp,,8080,,8081"
然后你可以打开,例如, [http://localhost:8081]/(http://localhost:8081), 在实例中端口8080运行的服务就会暴露出来.
切回默认驱动
也见: stop, local.driver
也见: stop, local.driver
如果你想切回默认驱动:
PS> multipass set local.driver=hyperkit
使用VirtualBox创建的实例无法转移, 但是你随时可以回来找到他们.