Multipass安装与使用
概述
Multipass 是一个轻量虚拟机管理器,是由 Ubuntu 运营公司 Canonical 所推出的开源项目。运行环境支Linux、Windows、macOS。在不同的操作系统上,使用的是不同的虚拟化技术。在 Linux 上使用的是 KVM、Window 上使用 Hyper-V、macOS 中使用 HyperKit 以最小开销运行VM,支持在笔记本模拟小型云。
同时,Multipass提供了一个命令行界面来启动和管理 Linux 实例。下载一个全新的镜像需要几秒钟的时间,并且在几分钟内就可以启动并运行 VM。大大降低安装虚拟机的成本了。
Mac安装Multipass
brew install multipass
卸载
brew uninstall multipass
版本查看
multipass --version
Ubuntu安装Multipass
sudo snap install multipass
版本查看
sudo multipass --version
Multipass基本命令
获取版本信息
multipass version
帮助
multipass help
查找镜像
multipass find
➜ ~ multipass find
Image Aliases Version Description
18.04 bionic 20230303 Ubuntu 18.04 LTS
20.04 focal 20230209 Ubuntu 20.04 LTS
22.04 jammy,lts 20230302 Ubuntu 22.04 LTS
22.10 kinetic 20230302 Ubuntu 22.10
anbox-cloud-appliance latest Anbox Cloud Appliance
charm-dev latest A development and testing environment for charmers
docker 0.4 A Docker environment with Portainer and related tools
jellyfin latest Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media.
minikube latest minikube is local Kubernetes
ros-noetic 0.1 A development and testing environment for ROS Noetic.
ros2-humble 0.1 A development and testing environment for ROS 2 Humble.
创建虚拟机
语法:multipass launch 镜像名称 -n 虚拟机名称
- -n, --name: 名称
- -c, --cpus: cpu核心数, 默认: 1
- -m, --mem: 内存大小, 默认: 1G
- -d, --disk: 硬盘大小, 默认: 5G
# 以ubuntu 22.04的镜像创建一个虚拟机,分配4core,4G内存,40G硬盘
multipass launch 22.04 -n ubuntu2204 -c 4 -m 8G -d 40G
查看虚拟机实例信息
multipass info ubuntu2204
➜ ~ multipass info ubuntu2204
Name: ubuntu2204
State: Running
IPv4: 192.168.64.2
Release: Ubuntu 22.04.2 LTS
Image hash: f6b5b3a980f2 (Ubuntu 22.04 LTS)
CPU(s): 4
Load: 0.18 0.08 0.03
Disk usage: 1.4GiB out of 38.6GiB
Memory usage: 162.3MiB out of 7.7GiB
Mounts: --
查看虚拟机实例列表
multipass ls
multipass list
➜ ~ multipass list
Name State IPv4 Image
ubuntu2204 Running 192.168.64.2 Ubuntu 22.04 LTS
➜ ~ multipass ls
Name State IPv4 Image
ubuntu2204 Running 192.168.64.2 Ubuntu 22.04 LTS
直接执行虚拟机命令
# '--'后面跟命令
multipass exec <vm-name> -- <command>
➜ ~ multipass exec ubuntu2204 -- ls -la /home/ubuntu
total 28
drwxr-x--- 4 ubuntu ubuntu 4096 Mar 11 20:28 .
drwxr-xr-x 3 root root 4096 Mar 11 20:28 ..
-rw-r--r-- 1 ubuntu ubuntu 220 Jan 7 2022 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3771 Jan 7 2022 .bashrc
drwx------ 2 ubuntu ubuntu 4096 Mar 11 20:28 .cache
-rw-r--r-- 1 ubuntu ubuntu 807 Jan 7 2022 .profile
drwx------ 2 ubuntu ubuntu 4096 Mar 11 20:28 .ssh
进入到虚拟机
multipass shell <vm-name>
启动虚拟机
multipass start <vm-name>
停止虚拟机
multipass stop <vm-name>
重启虚拟机
multipass restart <vm-name>
删除虚拟机
multipass delete <vm-name>
# 彻底删除
multipass delete --purge <vm-name>
恢复被删除虚拟机
multipass recover <vm-name>
宿主机挂载
multipass mount 宿主机目录 虚拟机名称:虚拟机目录
如:
# 挂载完数据目录之后可能需要重启虚拟机才能生效
multipass mount /mnt ubuntu2204
multipass mount /mnt ubuntu2204:/mnt
宿主机解除挂载
multipass unmount 虚拟机名称
multipass unmount ubuntu2204
挂起虚拟机
multipass suspend <vm-name>
问题
ssh连接vm失败Permission denied (publickey)
宿主机使用ssh连接vm失败,报错:Permission denied (publickey)
可能是Linux上ssh服务没有开密码登录
sudo vim /etc/ssh/sshd_config
找到PasswordAuthentication
,将no
改为yes
PasswordAuthentication yes
然后重启服务
sudo systemctl restart sshd
密码修改
sudo passwd ubuntu
挂载目录时报错
mac挂载数据目录报错:
mount failed: Error enabling mount support in 'ubuntu2204'
Please install the 'multipass-sshfs' snap manually inside the instance.
需要进入到虚拟机中,然后安装multipass-sshfs
multipass shell <vm-name>
sudo apt-get update
sudo apt-get install sshfs
无法联通外网
如果可以和宿主机正常通信却无法联通外网,检查是否开着vpn,当我开启vpn的时候在虚拟机内是无法ping通外网的