MultiPass使用介绍
多重密码(MultiPass)是一款开源工具,用于在本地计算机上创建和管理虚拟机。使用 MultiPass,您可以快速创建 Ubuntu 虚拟机并在其上运行各种应用程序和服务。
常见命令
以下是 MultiPass 常用的命令列表:
multipass launch
:启动一个新的虚拟机。multipass list
:列出当前所有的虚拟机。multipass start
:启动已经创建但是处于关闭状态的虚拟机。multipass stop
:关闭运行中的虚拟机。multipass delete
:删除指定的虚拟机。multipass shell
:连接到虚拟机的命令行终端。multipass exec
:在虚拟机中执行指定的命令。multipass mount
:将本地文件系统挂载到虚拟机中。multipass umount
:卸载已经挂载到虚拟机的本地文件系统。multipass info
:获取有关虚拟机的详细信息。multipass purge
:删除 MultiPass 系统中所有的虚拟机。multipass version
:查看当前安装的 MultiPass 版本。
以上是 MultiPass 的一些常用命令,还有其他更高级的命令和选项可供使用,您可以通过运行 multipass help
命令来了解所有可用的命令和选项。
下面是一些常用的 MultiPass 命令及其示例:
multipass launch
:启动一个新的虚拟机。示例:
该命令会创建一个名为
my-vm
的新虚拟机。multipass list
:列出当前所有的虚拟机。示例:
multipass list
该命令会列出当前 MultiPass 系统中的所有虚拟机。
multipass start
:启动已经创建但是处于关闭状态的虚拟机。示例:
该命令会启动名为
my-vm
的虚拟机。multipass stop
:关闭运行中的虚拟机。示例:
该命令会关闭名为
my-vm
的虚拟机。multipass delete
:删除指定的虚拟机。示例:
该命令会删除名为
my-vm
的虚拟机。multipass shell
:连接到虚拟机的命令行终端。示例:
该命令会连接到名为
my-vm
的虚拟机的命令行终端。multipass exec
:在虚拟机中执行命令,类似于在本地计算机上使用终端窗口。例如,以下命令将在名为vm1
的虚拟机上执行ls
命令:如果您需要在虚拟机中使用
sudo
或者su
命令,可以使用--
参数来将命令传递给虚拟机。例如,以下命令将在名为vm1
的虚拟机上执行apt update
命令:如果您需要在虚拟机中交互式地执行命令,可以使用
-t
参数来分配一个伪终端。例如,以下命令将在名为vm1
的虚拟机上打开一个 Bash shell:这将在虚拟机中打开一个交互式的 Bash shell,允许您执行任意命令。要退出虚拟机,请使用
exit
命令。multipass mount
:将主机目录挂载到虚拟机中。例如,以下命令将在名为vm1
的虚拟机上将主机目录/home/user/data
挂载到虚拟机目录/mnt/data
:这将在虚拟机中创建
/mnt/data
目录,并将主机目录/home/user/data
挂载到该目录中。要卸载目录,请使用multipass umount
命令。multipass umount
:卸载虚拟机中的挂载点。例如,以下命令将卸载名为vm1
的虚拟机中的/mnt/data
目录:multipass info
:显示有关虚拟机的信息,如虚拟机的 IP 地址、CPU 和内存使用情况等。例如,以下命令将显示名为vm1
的虚拟机的信息:multipass purge
:删除不再使用的虚拟机和镜像。例如,以下命令将删除不再使用的所有虚拟机和镜像:multipass version
:显示multipass
的版本信息。例如,以下命令将显示当前multipass
版本的信息:
指令详解
launch
指令
launch
指令是 multipass
命令中的一个子命令,用于创建并启动新的虚拟机。以下是 launch
指令的可用参数:
<name>
: 虚拟机名称,必须是一个不包含空格的字符串,不指定则随机生成。-c, --cpus <count>
: 虚拟机使用的 CPU 核心数量。-d, --disk <size>
: 虚拟机磁盘的大小,格式为<size>[G|g|M|m|K|k]
,默认为5G
。-m, --mem <size>
: 虚拟机内存的大小,格式为<size>[G|g|M|m|K|k]
,默认为1G
。-n, --network
: 启用虚拟机的网络功能。-i, --cloud-init <file>
: 指定 Cloud-init 配置文件的路径,以初始化虚拟机。--cloud-init-data <data>
: 直接指定 Cloud-init 配置文件的内容,以初始化虚拟机。--cloud-init-user-data <data>
: 指定 Cloud-init 用户数据的内容,以初始化虚拟机。--no-gui
: 禁用虚拟机的图形用户界面。--no-autostart
: 不自动启动虚拟机。--cpuset <cores>
: 指定使用的 CPU 核心编号列表,以逗号分隔。--priority <level>
: 指定虚拟机的调度优先级,可选值为low
、normal
和high
。--tag <tag>
: 给虚拟机打上标签,用于方便地进行分类和筛选。
以下是一些使用示例:
创建一个名为
test-vm
的虚拟机,使用默认配置:multipass launch test-vm
创建一个名为
test-vm
的虚拟机,使用 2 个 CPU 核心,2GB 内存,20GB 磁盘大小,启用网络,指定 Cloud-init 配置文件并关闭图形用户界面:创建一个名为
test-vm
的虚拟机,使用 1 个 CPU 核心,1GB 内存,5GB 磁盘大小,启用网络,指定 Cloud-init 用户数据,并不自动启动虚拟机:创建:可以使用
multipass launch
命令创建新的虚拟机。在创建虚拟机时,您可以指定虚拟机的名称、操作系统镜像、磁盘空间大小等参数。例如,以下命令将创建一个名为vm1
的 Ubuntu 20.04 LTS 虚拟机:这将创建一个具有 10GB 硬盘空间、2个 CPU 核心和 2GB RAM 的虚拟机,并安装 Ubuntu 20.04 LTS 操作系统。
list
指令
list
指令是 multipass
命令中的一个子命令,它用于列出所有正在运行的虚拟机和镜像,以及它们的状态。以下是 list
指令的一些常用参数:
-a
或--all
: 显示所有虚拟机和镜像,包括未运行的虚拟机和下载的镜像。-f
或--format
: 以指定格式输出结果。可用格式包括table
(默认)、json
、yaml
和csv
。--format-columns
: 可用于在指定格式中选择要包含的列。-v
或--verbose
: 显示更详细的信息,例如虚拟机的 IP 地址和 RAM/CPU 利用率。--cached
: 只显示缓存的镜像列表。--refresh
: 刷新镜像列表并显示结果。--json
: 以 JSON 格式输出结果。--yaml
: 以 YAML 格式输出结果。--csv
: 以 CSV 格式输出结果。
以下是一些使用示例:
列出所有正在运行的虚拟机和镜像:
multipass list
列出所有虚拟机和镜像,包括未运行的虚拟机和下载的镜像:
以 YAML 格式列出所有正在运行的虚拟机和镜像:
列出所有正在运行的虚拟机和镜像,并显示更详细的信息:
multipass list -v
列出缓存的镜像列表:
刷新镜像列表并列出结果:
以 JSON 格式列出所有正在运行的虚拟机和镜像:
list
指令是 multipass
命令中一个非常有用的子命令,可以帮助您快速查看您的虚拟机和镜像的状态。
start
指令
start
指令是 multipass
命令中的一个子命令,它用于启动一个之前创建的、处于停止状态的虚拟机。以下是 start
指令的一些常用参数:
<instance>
: 要启动的虚拟机的名称或 ID。-d
或--daemon
: 以守护进程模式启动虚拟机。-i
或--ip
: 指定虚拟机的 IP 地址。-n
或--network
: 指定要连接的网络名称。-m
或--mem
: 指定虚拟机的内存大小(以 MB 为单位)。-c
或--cpus
: 指定虚拟机可用的 CPU 数量。-s
或--size
: 指定虚拟磁盘的大小(以 GB 为单位)。-v
或--verbose
: 显示更详细的信息,例如虚拟机的 IP 地址和 RAM/CPU 利用率。-r
或--show-logs
: 显示虚拟机的日志输出。--no-ipv6
: 禁用 IPv6 支持。--cloud-init
: 指定 Cloud-init 配置文件的路径。--config
: 指定自定义的虚拟机配置文件的路径。--force
: 强制启动一个已停止的虚拟机。
以下是一些使用示例:
启动一个之前创建的、处于停止状态的虚拟机:
以守护进程模式启动一个虚拟机:
指定虚拟机的 IP 地址:
指定要连接的网络名称:
指定虚拟机的内存大小:
指定虚拟机可用的 CPU 数量:
指定虚拟磁盘的大小:
显示更详细的信息,例如虚拟机的 IP 地址和 RAM/CPU 利用率:
显示虚拟机的日志输出:
禁用 IPv6 支持:
指定 Cloud-init 配置文件的路径:
当创建虚拟机时,您可以使用
--cloud-init
选项来指定包含 Cloud-init 配置文件的路径。Cloud-init 配置文件是一个 YAML 文件,其中包含有关如何初始化虚拟机的信息。在配置文件中,您可以指定用户帐户、SSH 密钥、软件包安装、文件创建等等。以下是一个示例 Cloud-init 配置文件:使用
--cloud-init
选项创建虚拟机时,指定配置文件的路径:这将使用指定的 Cloud-init 配置文件来初始化虚拟机。
stop
指令
stop
指令是 multipass
命令中的一个子命令,它用于停止运行中的虚拟机。以下是 stop
指令的一些常用参数:
<instance>
: 要停止的虚拟机的名称或 ID。-d
或--daemon
: 以守护进程模式停止虚拟机。-w
或--wait
: 等待虚拟机完全停止后再返回。-t
或--timeout
: 指定等待虚拟机停止的最长时间(以秒为单位)。-r
或--show-logs
: 显示虚拟机的日志输出。
以下是一些使用示例:
停止一个运行中的虚拟机:
以守护进程模式停止一个运行中的虚拟机:
等待虚拟机完全停止后再返回:
指定等待虚拟机停止的最长时间:
显示虚拟机的日志输出:
注意:在停止虚拟机之前,请确保您已经保存了其中的所有数据。
delete
指令
delete
指令是 multipass
命令中的一个子命令,用于删除虚拟机。以下是 delete
指令的一些常用参数:
<instance>
: 要删除的虚拟机的名称或 ID。-p
或--purge
: 删除虚拟机时删除所有相关数据(包括磁盘映像、云初始化等)。-f
或--force
: 不要提示确认,直接删除虚拟机。
以下是一些使用示例:
删除一个虚拟机:
删除虚拟机时删除所有相关数据(包括磁盘映像、云初始化等):
不要提示确认,直接删除虚拟机:
注意:删除虚拟机时,请确保您已经保存了其中的所有数据。删除后无法恢复。
shell
指令
shell
指令是 multipass
命令中的一个子命令,用于在虚拟机中运行一个 shell。以下是 shell
指令的一些常用参数:
<instance>
: 要运行 shell 的虚拟机的名称或 ID。command
: 要在虚拟机中运行的 shell 命令。
以下是一些使用示例:
进入虚拟机中的默认 shell:
运行指定的 shell 命令:
例如,运行
ls
命令:在虚拟机中以交互式模式启动一个 shell:
以 root 用户身份进入虚拟机中的默认 shell:
注意:要使用 shell
指令,虚拟机必须处于运行状态。另外,如果您在虚拟机中使用了 sudo
或其他特权命令,请小心操作,以避免意外损坏虚拟机。
exec
指令
exec
指令是 multipass
命令中的一个子命令,用于在虚拟机中执行一个命令。相比于 shell
指令,exec
指令不需要进入虚拟机的 shell 环境。以下是 exec
指令的一些常用参数:
<instance>
: 要执行命令的虚拟机的名称或 ID。command
: 要在虚拟机中执行的命令。
以下是一些使用示例:
在虚拟机中执行指定的命令:
例如,运行
ls
命令:在虚拟机中执行一个长时间运行的命令,并将输出保存到本地文件:
例如,将虚拟机中的
tar
命令输出保存到本地文件:在虚拟机中以特权用户身份执行命令:
例如,以特权用户身份更新虚拟机中的软件包:
注意:要使用 exec
指令,虚拟机必须处于运行状态。另外,请小心操作,以避免意外损坏虚拟机。
mount
指令
mount
指令是 multipass
命令中的一个子命令,用于将本地文件系统中的目录挂载到虚拟机的文件系统中。以下是 mount
指令的一些常用参数:
<instance>
: 要挂载文件系统的虚拟机的名称或 ID。<host_dir>
: 本地文件系统中要挂载的目录路径。<guest_dir>
: 虚拟机文件系统中要将目录挂载到的路径。
以下是一些使用示例:
将本地文件系统中的目录挂载到虚拟机的
/mnt
目录:将本地文件系统中的目录挂载到虚拟机的
/mnt
目录,并在挂载时将目录设置为只读:将本地文件系统中的目录挂载到虚拟机的
/mnt
目录,并在挂载时将目录设置为可写:
注意:要使用 mount
指令,虚拟机必须处于运行状态。另外,如果您在虚拟机中使用了 sudo
或其他特权命令,请小心操作,以避免意外损坏虚拟机。
umount
指令
umount
指令是 multipass
命令中的一个子命令,用于卸载虚拟机中挂载的文件系统。以下是 umount
指令的一些常用参数:
<instance>
: 要卸载文件系统的虚拟机的名称或 ID。<guest_dir>
: 虚拟机文件系统中要卸载的目录路径。
以下是一些使用示例:
卸载虚拟机中
/mnt
目录的文件系统:
注意:在卸载文件系统之前,请确保虚拟机中没有正在使用该文件系统的进程或应用程序。在卸载文件系统之后,挂载的目录将不再在虚拟机中可用。
info
指令
info
指令是 multipass
命令中的一个子命令,用于显示有关虚拟机的信息,例如虚拟机的名称、状态、IP 地址、磁盘使用情况等。以下是 info
指令的一些常用参数:
<instance>
: 要显示信息的虚拟机的名称或 ID。--all
: 显示所有虚拟机的信息。--json
: 以 JSON 格式输出信息。
以下是一些使用示例:
显示名为
vm1
的虚拟机的信息:multipass info vm1
显示所有虚拟机的信息:
以 JSON 格式显示名为
vm1
的虚拟机的信息:
注意:info
指令可以用来查看虚拟机的状态和 IP 地址等信息,以便于管理虚拟机。在查看虚拟机信息时,可以通过 --json
参数以 JSON 格式输出信息,以便于其他脚本或程序进行处理。
purge
指令
purge
指令是 multipass
命令中的一个子命令,用于删除所有已停止的虚拟机及其磁盘映像文件。以下是 purge
指令的一些常用参数:
--all
: 删除所有虚拟机及其磁盘映像文件,包括正在运行的虚拟机。--storage
: 仅删除磁盘映像文件,不删除虚拟机。--verbose
: 显示详细输出。
以下是一些使用示例:
删除所有已停止的虚拟机及其磁盘映像文件:
仅删除磁盘映像文件,不删除虚拟机:
显示详细输出:
注意:在使用 purge
指令之前,请确保已备份虚拟机中重要的数据。此指令会将所有已停止的虚拟机及其磁盘映像文件永久删除,不能恢复。因此,谨慎使用此指令。
version
指令
version
指令是 multipass
命令中的一个子命令,用于显示当前 multipass
的版本信息。以下是 version
指令的可用参数:
--format
: 指定输出格式,支持json
和yaml
两种格式。
以下是一些使用示例:
显示当前
multipass
的版本信息:multipass version
输出类似于以下内容:
multipass 1.7.0+mac
将版本信息以 JSON 格式输出:
输出类似于以下内容:
将版本信息以 YAML 格式输出:
输出类似于以下内容:
注意:version
指令没有删除或修改任何虚拟机或磁盘映像文件,是只读操作。