Incus 入门

本教程指导您完成 Incus 的入门步骤。它涵盖了安装和初始化 Incus、创建和配置一些实例、与实例交互以及创建快照。

完成这些步骤后,您将对如何使用 Incus 有一个大致了解,并且可以开始探索更高级的使用案例!

安装和初始化 Incus

  1. 安装 Incus 包

    Incus 在大多数常见的 Linux 发行版上都可用。

    有关特定于发行版的详细说明,请参考 如何安装 Incus

  2. 允许您的用户控制 Incus

    对上述包中的 Incus 的访问权限由两个组控制

    • incus 允许基本用户访问,没有配置,并且所有操作都限制为每个用户的项目。

    • incus-admin 允许完全控制 Incus。

    为了控制 Incus 而不必以 root 用户身份运行所有命令,您可以将自己添加到 incus-admin 组中

    sudo adduser YOUR-USERNAME incus-admin
    newgrp incus-admin
    

    在您重新启动用户会话之前,在与 Incus 交互的任何终端中都需要 newgrp 步骤。

  3. 初始化 Incus

    注意

    如果您是从现有的 LXD 安装迁移,请跳过此步骤,并改用 从 LXD 迁移

    Incus 需要一些网络和存储的初始设置。这可以通过交互方式完成

    incus admin init
    

    或者,可以使用以下命令应用基本的自动配置

    incus admin init --minimal
    

    如果您想调整初始化选项,请参阅 如何初始化 Incus 以获取更多信息。

启动和检查实例

Incus 是基于镜像的,可以从不同的镜像服务器加载镜像。在本教程中,我们将使用 官方镜像服务器

您可以使用以下命令列出此服务器上可用的所有镜像

incus image list images:

有关 Incus 使用的镜像的更多信息,请参阅 镜像

现在,让我们开始启动一些实例。实例是指容器或虚拟机。有关两种实例类型之间区别的信息,请参阅 关于容器和虚拟机

为了管理实例,我们使用 Incus 命令行客户端 incus

  1. 使用 Ubuntu 22.04 镜像启动一个名为 first 的容器

    incus launch images:ubuntu/22.04 first
    

    注意

    启动此容器需要几秒钟,因为镜像必须先下载并解压。

  2. 使用相同的镜像启动一个名为 second 的容器

    incus launch images:ubuntu/22.04 second
    

    注意

    启动此容器比启动第一个容器更快,因为镜像已经可用。

  3. 将第一个容器复制到一个名为 third 的容器中

    incus copy first third
    
  4. 使用 Ubuntu 22.04 镜像启动一个名为 ubuntu-vm 的 VM

    incus launch images:ubuntu/22.04 ubuntu-vm --vm
    

    注意

    即使您使用相同的镜像名称来启动实例,Incus 也会下载一个与 VM 兼容的略有不同的镜像。

  5. 检查您启动的实例列表

    incus list
    

    您将看到,除了第三个容器之外,其他所有容器都在运行。这是因为您通过复制第一个容器来创建第三个容器,但您没有启动它。

    您可以使用以下命令启动第三个容器

    incus start third
    
  6. 使用以下命令查询有关每个实例的更多信息

    incus info first
    incus info second
    incus info third
    incus info ubuntu-vm
    
  7. 在教程的剩余部分中,我们不需要所有这些实例,因此让我们清理其中一些实例

    1. 停止第二个容器

      incus stop second
      
    2. 删除第二个容器

      incus delete second
      
    3. 删除第三个容器

      incus delete third
      

      由于此容器正在运行,因此您会收到一条错误消息,提示您必须先停止它。或者,您可以强制删除它

      incus delete third --force
      

有关更多信息,请参阅 如何创建实例如何管理实例

配置实例

您可以为实例设置多个限制和配置选项。有关概述,请参阅 实例选项

让我们创建一个带有资源限制的另一个容器

  1. 启动一个容器,并将其限制为一个 vCPU 和 192 MiB 内存

    incus launch images:ubuntu/22.04 limited --config limits.cpu=1 --config limits.memory=192MiB
    
  2. 检查当前配置,并将其与第一个(无限制)容器的配置进行比较

    incus config show limited
    incus config show first
    
  3. 检查父系统以及两个容器上的可用内存和已用内存

    free -m
    incus exec first -- free -m
    incus exec limited -- free -m
    

    注意

    父系统和第一个容器的总内存量相同,因为默认情况下,容器会继承其父环境的资源。另一方面,受限容器只有 192 MiB 可用。

  4. 检查父系统和两个容器上可用的 CPU 数量。

    nproc
    incus exec first -- nproc
    incus exec limited -- nproc
    

    注意

    同样,父系统和第一个容器的数量相同,但受限容器的数量减少了。

  5. 您也可以在容器运行时更新配置。

    1. 为容器配置内存限制。

      incus config set limited limits.memory=128MiB
      
    2. 检查配置是否已应用。

      incus config show limited
      
    3. 检查容器可用的内存量。

      incus exec limited -- free -m
      

      请注意,该数字已更改。

  6. 根据您使用的实例类型和存储驱动程序,您还可以指定更多配置选项。例如,您可以配置 VM 的根磁盘设备的大小。

    1. 检查 Ubuntu VM 的根磁盘设备的当前大小。

      user@host:~$ incus exec ubuntu-vm -- df -h
      Filesystem      Size  Used Avail Use% Mounted on/dev/root       9.6G  1.4G  8.2G  15% /tmpfs           483M     0  483M   0% /dev/shmtmpfs           193M  604K  193M   1% /runtmpfs           5.0M     0  5.0M   0% /run/locktmpfs            50M   14M   37M  27% /run/incus_agent/dev/sda15      105M  6.1M   99M   6% /boot/efi
    2. 覆盖根磁盘设备的大小。

      incus config device override ubuntu-vm root size=30GiB
      
    3. 重新启动 VM。

      incus restart ubuntu-vm
      
    4. 再次检查根磁盘设备的大小。

      user@host:~$ incus exec ubuntu-vm -- df -h
      Filesystem      Size  Used Avail Use% Mounted on/dev/root        29G  1.4G   28G   5% /tmpfs           483M     0  483M   0% /dev/shmtmpfs           193M  588K  193M   1% /runtmpfs           5.0M     0  5.0M   0% /run/locktmpfs            50M   14M   37M  27% /run/incus_agent/dev/sda15      105M  6.1M   99M   6% /boot/efi

有关更多信息,请参阅 如何配置实例实例配置

与实例交互

您可以通过在实例中运行命令(包括交互式 shell)或访问实例中的文件来与实例交互。

首先在您的实例中启动一个交互式 shell。

  1. 在您的容器中运行 bash 命令。

    incus exec first -- bash
    
  2. 输入一些命令,例如,显示有关操作系统的详细信息。

    cat /etc/*release
    
  3. 退出交互式 shell。

    exit
    

您无需登录到实例并在其中运行命令,而是可以直接从主机运行命令。

例如,您可以在实例上安装一个命令行工具并运行它。

incus exec first -- apt-get update
incus exec first -- apt-get install sl -y
incus exec first -- /usr/games/sl

有关更多信息,请参阅 如何在实例中运行命令

您也可以访问来自实例的文件并与它们交互。

  1. 从容器中拉取一个文件。

    incus file pull first/etc/hosts .
    
  2. 向文件添加一个条目。

    echo "1.2.3.4 my-example" >> hosts
    
  3. 将文件推回容器。

    incus file push hosts first/etc/hosts
    
  4. 使用相同机制访问日志文件。

    incus file pull first/var/log/syslog - | less
    

    注意

    q 退出 less 命令。

有关更多信息,请参阅 如何访问实例中的文件

管理快照

您可以创建实例的快照,这使您可以轻松地将实例恢复到以前的状态。

  1. 创建一个名为“clean”的快照。

    incus snapshot create first clean
    
  2. 确认快照已创建。

    incus list first
    incus info first
    

    注意

    incus list 显示快照数量。 incus info 显示有关每个快照的信息。

  3. 破坏容器。

    incus exec first -- rm /usr/bin/bash
    
  4. 确认破坏。

    incus exec first -- bash
    

    注意

    您不会获得 shell,因为您删除了 bash 命令。

  5. 将容器恢复到快照的状态。

    incus snapshot restore first clean
    
  6. 确认一切已恢复正常。

    incus exec first -- bash
    exit
    
  7. 删除快照。

    incus snapshot delete first clean
    

有关更多信息,请参阅 使用快照进行实例备份