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 命令及其示例:

  1. multipass launch:启动一个新的虚拟机。

    示例:

    multipass launch --name my-vm

    该命令会创建一个名为 my-vm 的新虚拟机。

  2. multipass list:列出当前所有的虚拟机。

    示例:

    multipass list

    该命令会列出当前 MultiPass 系统中的所有虚拟机。

  3. multipass start:启动已经创建但是处于关闭状态的虚拟机。

    示例:

    multipass start my-vm

    该命令会启动名为 my-vm 的虚拟机。

  4. multipass stop:关闭运行中的虚拟机。

    示例:

    multipass stop my-vm

    该命令会关闭名为 my-vm 的虚拟机。

  5. multipass delete:删除指定的虚拟机。

    示例:

    multipass delete my-vm

    该命令会删除名为 my-vm 的虚拟机。

  6. multipass shell:连接到虚拟机的命令行终端。

    示例:

    multipass shell my-vm

    该命令会连接到名为 my-vm 的虚拟机的命令行终端。

  7. multipass exec:在虚拟机中执行命令,类似于在本地计算机上使用终端窗口。例如,以下命令将在名为 vm1 的虚拟机上执行 ls 命令:

    multipass exec vm1 ls

    如果您需要在虚拟机中使用 sudo 或者 su 命令,可以使用 -- 参数来将命令传递给虚拟机。例如,以下命令将在名为 vm1 的虚拟机上执行 apt update 命令:

    multipass exec vm1 -- sudo apt update

    如果您需要在虚拟机中交互式地执行命令,可以使用 -t 参数来分配一个伪终端。例如,以下命令将在名为 vm1 的虚拟机上打开一个 Bash shell:

    multipass exec vm1 -t -- bash

    这将在虚拟机中打开一个交互式的 Bash shell,允许您执行任意命令。要退出虚拟机,请使用 exit 命令。

  8. multipass mount:将主机目录挂载到虚拟机中。例如,以下命令将在名为 vm1 的虚拟机上将主机目录 /home/user/data 挂载到虚拟机目录 /mnt/data

    multipass mount /home/user/data vm1:/mnt/data

    这将在虚拟机中创建 /mnt/data 目录,并将主机目录 /home/user/data 挂载到该目录中。要卸载目录,请使用 multipass umount 命令。

  9. multipass umount:卸载虚拟机中的挂载点。例如,以下命令将卸载名为 vm1 的虚拟机中的 /mnt/data 目录:

    multipass umount vm1:/mnt/data
  10. multipass info:显示有关虚拟机的信息,如虚拟机的 IP 地址、CPU 和内存使用情况等。例如,以下命令将显示名为 vm1 的虚拟机的信息:

    multipass info vm1
  11. multipass purge:删除不再使用的虚拟机和镜像。例如,以下命令将删除不再使用的所有虚拟机和镜像:

    multipass purge
  12. multipass version:显示 multipass 的版本信息。例如,以下命令将显示当前 multipass 版本的信息:

    multipass version

指令详解

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>: 指定虚拟机的调度优先级,可选值为 lownormalhigh
  • --tag <tag>: 给虚拟机打上标签,用于方便地进行分类和筛选。

以下是一些使用示例:

  1. 创建一个名为 test-vm 的虚拟机,使用默认配置:

    multipass launch test-vm

  2. 创建一个名为 test-vm 的虚拟机,使用 2 个 CPU 核心,2GB 内存,20GB 磁盘大小,启用网络,指定 Cloud-init 配置文件并关闭图形用户界面:

    multipass launch test-vm -c 2 -m 2G -d 20G -n -i cloud-config.yaml --no-gui
  3. 创建一个名为 test-vm 的虚拟机,使用 1 个 CPU 核心,1GB 内存,5GB 磁盘大小,启用网络,指定 Cloud-init 用户数据,并不自动启动虚拟机:

    multipass launch test-vm -c 1 -m 1G -d 5G -n --cloud-init-user-data "#cloud-config\n\npassword: mypassword\nssh_authorized_keys:\n  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDT8Xqa7dPyH+I...." --no-autostart
  4. 创建:可以使用 multipass launch 命令创建新的虚拟机。在创建虚拟机时,您可以指定虚拟机的名称、操作系统镜像、磁盘空间大小等参数。例如,以下命令将创建一个名为 vm1 的 Ubuntu 20.04 LTS 虚拟机:

    multipass launch --name vm1 --image ubuntu-20.04 --disk 10G --cpus 2 --mem 2G

    这将创建一个具有 10GB 硬盘空间、2个 CPU 核心和 2GB RAM 的虚拟机,并安装 Ubuntu 20.04 LTS 操作系统。

list指令

list 指令是 multipass 命令中的一个子命令,它用于列出所有正在运行的虚拟机和镜像,以及它们的状态。以下是 list 指令的一些常用参数:

  • -a--all: 显示所有虚拟机和镜像,包括未运行的虚拟机和下载的镜像。
  • -f--format: 以指定格式输出结果。可用格式包括 table(默认)、jsonyamlcsv
  • --format-columns: 可用于在指定格式中选择要包含的列。
  • -v--verbose: 显示更详细的信息,例如虚拟机的 IP 地址和 RAM/CPU 利用率。
  • --cached: 只显示缓存的镜像列表。
  • --refresh: 刷新镜像列表并显示结果。
  • --json: 以 JSON 格式输出结果。
  • --yaml: 以 YAML 格式输出结果。
  • --csv: 以 CSV 格式输出结果。

以下是一些使用示例:

  1. 列出所有正在运行的虚拟机和镜像:

    multipass list

  2. 列出所有虚拟机和镜像,包括未运行的虚拟机和下载的镜像:

    multipass list -a
  3. 以 YAML 格式列出所有正在运行的虚拟机和镜像:

    multipass list --yaml
  4. 列出所有正在运行的虚拟机和镜像,并显示更详细的信息:

    multipass list -v

  5. 列出缓存的镜像列表:

    multipass list --cached
  6. 刷新镜像列表并列出结果:

    multipass list --refresh
  7. 以 JSON 格式列出所有正在运行的虚拟机和镜像:

    multipass list --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: 强制启动一个已停止的虚拟机。

以下是一些使用示例:

  1. 启动一个之前创建的、处于停止状态的虚拟机:

    multipass start <instance>
  2. 以守护进程模式启动一个虚拟机:

    multipass start <instance> --daemon
  3. 指定虚拟机的 IP 地址:

    multipass start <instance> --ip <ip_address>
  4. 指定要连接的网络名称:

    multipass start <instance> --network <network_name>
  5. 指定虚拟机的内存大小:

    multipass start <instance> --mem <memory_size>
  6. 指定虚拟机可用的 CPU 数量:

    multipass start <instance> --cpus <cpu_count>
  7. 指定虚拟磁盘的大小:

    multipass start <instance> --size <disk_size>
  8. 显示更详细的信息,例如虚拟机的 IP 地址和 RAM/CPU 利用率:

    multipass start <instance> --verbose
  9. 显示虚拟机的日志输出:

    multipass start <instance> --show-logs
  10. 禁用 IPv6 支持:

    multipass start <instance> --no-ipv6
  11. 指定 Cloud-init 配置文件的路径:

    当创建虚拟机时,您可以使用 --cloud-init 选项来指定包含 Cloud-init 配置文件的路径。Cloud-init 配置文件是一个 YAML 文件,其中包含有关如何初始化虚拟机的信息。在配置文件中,您可以指定用户帐户、SSH 密钥、软件包安装、文件创建等等。以下是一个示例 Cloud-init 配置文件:

    #cloud-config
    users:
      - name: username
        ssh-authorized-keys:
          - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxrpA...
        sudo: ['ALL=(ALL) NOPASSWD:ALL']

    使用 --cloud-init 选项创建虚拟机时,指定配置文件的路径:

    multipass launch --name vmname --cloud-init /path/to/cloud-init-file.yaml

    这将使用指定的 Cloud-init 配置文件来初始化虚拟机。

stop指令

stop 指令是 multipass 命令中的一个子命令,它用于停止运行中的虚拟机。以下是 stop 指令的一些常用参数:

  • <instance>: 要停止的虚拟机的名称或 ID。
  • -d--daemon: 以守护进程模式停止虚拟机。
  • -w--wait: 等待虚拟机完全停止后再返回。
  • -t--timeout: 指定等待虚拟机停止的最长时间(以秒为单位)。
  • -r--show-logs: 显示虚拟机的日志输出。

以下是一些使用示例:

  1. 停止一个运行中的虚拟机:

    multipass stop <instance>
  2. 以守护进程模式停止一个运行中的虚拟机:

    multipass stop <instance> --daemon
  3. 等待虚拟机完全停止后再返回:

    multipass stop <instance> --wait
  4. 指定等待虚拟机停止的最长时间:

    multipass stop <instance> --timeout <timeout_in_seconds>
  5. 显示虚拟机的日志输出:

    multipass stop <instance> --show-logs

注意:在停止虚拟机之前,请确保您已经保存了其中的所有数据。

delete指令

delete 指令是 multipass 命令中的一个子命令,用于删除虚拟机。以下是 delete 指令的一些常用参数:

  • <instance>: 要删除的虚拟机的名称或 ID。
  • -p--purge: 删除虚拟机时删除所有相关数据(包括磁盘映像、云初始化等)。
  • -f--force: 不要提示确认,直接删除虚拟机。

以下是一些使用示例:

  1. 删除一个虚拟机:

    multipass delete <instance>
  2. 删除虚拟机时删除所有相关数据(包括磁盘映像、云初始化等):

    multipass delete <instance> --purge
  3. 不要提示确认,直接删除虚拟机:

    multipass delete <instance> --force

注意:删除虚拟机时,请确保您已经保存了其中的所有数据。删除后无法恢复。

shell指令

shell 指令是 multipass 命令中的一个子命令,用于在虚拟机中运行一个 shell。以下是 shell 指令的一些常用参数:

  • <instance>: 要运行 shell 的虚拟机的名称或 ID。
  • command: 要在虚拟机中运行的 shell 命令。

以下是一些使用示例:

  1. 进入虚拟机中的默认 shell:

    multipass shell <instance>
  2. 运行指定的 shell 命令:

    multipass shell <instance> <command>

    例如,运行 ls 命令:

    multipass shell <instance> ls
  3. 在虚拟机中以交互式模式启动一个 shell:

    multipass shell <instance> -i
  4. 以 root 用户身份进入虚拟机中的默认 shell:

    multipass shell <instance> --user root

注意:要使用 shell 指令,虚拟机必须处于运行状态。另外,如果您在虚拟机中使用了 sudo 或其他特权命令,请小心操作,以避免意外损坏虚拟机。

exec指令

exec 指令是 multipass 命令中的一个子命令,用于在虚拟机中执行一个命令。相比于 shell 指令,exec 指令不需要进入虚拟机的 shell 环境。以下是 exec 指令的一些常用参数:

  • <instance>: 要执行命令的虚拟机的名称或 ID。
  • command: 要在虚拟机中执行的命令。

以下是一些使用示例:

  1. 在虚拟机中执行指定的命令:

    multipass exec <instance> <command>

    例如,运行 ls 命令:

    multipass exec <instance> ls
  2. 在虚拟机中执行一个长时间运行的命令,并将输出保存到本地文件:

    multipass exec <instance> <command> > <local_file>

    例如,将虚拟机中的 tar 命令输出保存到本地文件:

    multipass exec <instance> tar -cvzf - /path/to/directory > local_file.tar.gz
  3. 在虚拟机中以特权用户身份执行命令:

    multipass exec <instance> sudo <command>

    例如,以特权用户身份更新虚拟机中的软件包:

    multipass exec <instance> sudo apt-get update

注意:要使用 exec 指令,虚拟机必须处于运行状态。另外,请小心操作,以避免意外损坏虚拟机。

mount指令

mount 指令是 multipass 命令中的一个子命令,用于将本地文件系统中的目录挂载到虚拟机的文件系统中。以下是 mount 指令的一些常用参数:

  • <instance>: 要挂载文件系统的虚拟机的名称或 ID。
  • <host_dir>: 本地文件系统中要挂载的目录路径。
  • <guest_dir>: 虚拟机文件系统中要将目录挂载到的路径。

以下是一些使用示例:

  1. 将本地文件系统中的目录挂载到虚拟机的 /mnt 目录:

    multipass mount <instance> <host_dir> /mnt
  2. 将本地文件系统中的目录挂载到虚拟机的 /mnt 目录,并在挂载时将目录设置为只读:

    multipass mount <instance> <host_dir> /mnt --read-only
  3. 将本地文件系统中的目录挂载到虚拟机的 /mnt 目录,并在挂载时将目录设置为可写:

    multipass mount <instance> <host_dir> /mnt --writable

注意:要使用 mount 指令,虚拟机必须处于运行状态。另外,如果您在虚拟机中使用了 sudo 或其他特权命令,请小心操作,以避免意外损坏虚拟机。

umount指令

umount 指令是 multipass 命令中的一个子命令,用于卸载虚拟机中挂载的文件系统。以下是 umount 指令的一些常用参数:

  • <instance>: 要卸载文件系统的虚拟机的名称或 ID。
  • <guest_dir>: 虚拟机文件系统中要卸载的目录路径。

以下是一些使用示例:

  1. 卸载虚拟机中 /mnt 目录的文件系统:

    multipass umount <instance> /mnt

注意:在卸载文件系统之前,请确保虚拟机中没有正在使用该文件系统的进程或应用程序。在卸载文件系统之后,挂载的目录将不再在虚拟机中可用。

info指令

info 指令是 multipass 命令中的一个子命令,用于显示有关虚拟机的信息,例如虚拟机的名称、状态、IP 地址、磁盘使用情况等。以下是 info 指令的一些常用参数:

  • <instance>: 要显示信息的虚拟机的名称或 ID。
  • --all: 显示所有虚拟机的信息。
  • --json: 以 JSON 格式输出信息。

以下是一些使用示例:

  1. 显示名为 vm1 的虚拟机的信息:

    multipass info vm1

  2. 显示所有虚拟机的信息:

    multipass info --all
  3. 以 JSON 格式显示名为 vm1 的虚拟机的信息:

    multipass info vm1 --json

注意:info 指令可以用来查看虚拟机的状态和 IP 地址等信息,以便于管理虚拟机。在查看虚拟机信息时,可以通过 --json 参数以 JSON 格式输出信息,以便于其他脚本或程序进行处理。

purge指令

purge 指令是 multipass 命令中的一个子命令,用于删除所有已停止的虚拟机及其磁盘映像文件。以下是 purge 指令的一些常用参数:

  • --all: 删除所有虚拟机及其磁盘映像文件,包括正在运行的虚拟机。
  • --storage: 仅删除磁盘映像文件,不删除虚拟机。
  • --verbose: 显示详细输出。

以下是一些使用示例:

  1. 删除所有已停止的虚拟机及其磁盘映像文件:

    multipass purge --all
  2. 仅删除磁盘映像文件,不删除虚拟机:

    multipass purge --storage
  3. 显示详细输出:

    multipass purge --verbose

注意:在使用 purge 指令之前,请确保已备份虚拟机中重要的数据。此指令会将所有已停止的虚拟机及其磁盘映像文件永久删除,不能恢复。因此,谨慎使用此指令。

version指令

version 指令是 multipass 命令中的一个子命令,用于显示当前 multipass 的版本信息。以下是 version 指令的可用参数:

  • --format: 指定输出格式,支持 jsonyaml 两种格式。

以下是一些使用示例:

  1. 显示当前 multipass 的版本信息:

    multipass version

    输出类似于以下内容:

    multipass 1.7.0+mac

  2. 将版本信息以 JSON 格式输出:

    multipass version --format json

    输出类似于以下内容:

    {"version": "1.7.0+mac"}
  3. 将版本信息以 YAML 格式输出:

    multipass version --format yaml

    输出类似于以下内容:

    version: 1.7.0+mac

注意:version 指令没有删除或修改任何虚拟机或磁盘映像文件,是只读操作。


MultiPass使用介绍
https://blog.cikaros.top/doc/c9a14894.html
作者
Cikaros
发布于
2023年3月11日
许可协议