Incus 入门¶
本教程指导您完成 Incus 的入门步骤。它涵盖了安装和初始化 Incus、创建和配置一些实例、与实例交互以及创建快照。
完成这些步骤后,您将对如何使用 Incus 有一个大致了解,并且可以开始探索更高级的使用案例!
安装和初始化 Incus¶
安装 Incus 包
Incus 在大多数常见的 Linux 发行版上都可用。
有关特定于发行版的详细说明,请参考 如何安装 Incus。
允许您的用户控制 Incus
对上述包中的 Incus 的访问权限由两个组控制
incus
允许基本用户访问,没有配置,并且所有操作都限制为每个用户的项目。incus-admin
允许完全控制 Incus。
为了控制 Incus 而不必以 root 用户身份运行所有命令,您可以将自己添加到
incus-admin
组中sudo adduser YOUR-USERNAME incus-admin newgrp incus-admin
在您重新启动用户会话之前,在与 Incus 交互的任何终端中都需要
newgrp
步骤。初始化 Incus
注意
如果您是从现有的 LXD 安装迁移,请跳过此步骤,并改用 从 LXD 迁移。
Incus 需要一些网络和存储的初始设置。这可以通过交互方式完成
incus admin init
或者,可以使用以下命令应用基本的自动配置
incus admin init --minimal
如果您想调整初始化选项,请参阅 如何初始化 Incus 以获取更多信息。
启动和检查实例¶
Incus 是基于镜像的,可以从不同的镜像服务器加载镜像。在本教程中,我们将使用 官方镜像服务器。
您可以使用以下命令列出此服务器上可用的所有镜像
incus image list images:
有关 Incus 使用的镜像的更多信息,请参阅 镜像。
现在,让我们开始启动一些实例。实例是指容器或虚拟机。有关两种实例类型之间区别的信息,请参阅 关于容器和虚拟机。
为了管理实例,我们使用 Incus 命令行客户端 incus
。
使用 Ubuntu 22.04 镜像启动一个名为
first
的容器incus launch images:ubuntu/22.04 first
注意
启动此容器需要几秒钟,因为镜像必须先下载并解压。
使用相同的镜像启动一个名为
second
的容器incus launch images:ubuntu/22.04 second
注意
启动此容器比启动第一个容器更快,因为镜像已经可用。
将第一个容器复制到一个名为
third
的容器中incus copy first third
使用 Ubuntu 22.04 镜像启动一个名为
ubuntu-vm
的 VMincus launch images:ubuntu/22.04 ubuntu-vm --vm
注意
即使您使用相同的镜像名称来启动实例,Incus 也会下载一个与 VM 兼容的略有不同的镜像。
检查您启动的实例列表
incus list
您将看到,除了第三个容器之外,其他所有容器都在运行。这是因为您通过复制第一个容器来创建第三个容器,但您没有启动它。
您可以使用以下命令启动第三个容器
incus start third
使用以下命令查询有关每个实例的更多信息
incus info first incus info second incus info third incus info ubuntu-vm
在教程的剩余部分中,我们不需要所有这些实例,因此让我们清理其中一些实例
停止第二个容器
incus stop second
删除第二个容器
incus delete second
删除第三个容器
incus delete third
由于此容器正在运行,因此您会收到一条错误消息,提示您必须先停止它。或者,您可以强制删除它
incus delete third --force
配置实例¶
您可以为实例设置多个限制和配置选项。有关概述,请参阅 实例选项。
让我们创建一个带有资源限制的另一个容器
启动一个容器,并将其限制为一个 vCPU 和 192 MiB 内存
incus launch images:ubuntu/22.04 limited --config limits.cpu=1 --config limits.memory=192MiB
检查当前配置,并将其与第一个(无限制)容器的配置进行比较
incus config show limited incus config show first
检查父系统以及两个容器上的可用内存和已用内存
free -m incus exec first -- free -m incus exec limited -- free -m
注意
父系统和第一个容器的总内存量相同,因为默认情况下,容器会继承其父环境的资源。另一方面,受限容器只有 192 MiB 可用。
检查父系统和两个容器上可用的 CPU 数量。
nproc incus exec first -- nproc incus exec limited -- nproc
注意
同样,父系统和第一个容器的数量相同,但受限容器的数量减少了。
您也可以在容器运行时更新配置。
为容器配置内存限制。
incus config set limited limits.memory=128MiB
检查配置是否已应用。
incus config show limited
检查容器可用的内存量。
incus exec limited -- free -m
请注意,该数字已更改。
根据您使用的实例类型和存储驱动程序,您还可以指定更多配置选项。例如,您可以配置 VM 的根磁盘设备的大小。
检查 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/shm
tmpfs 193M 604K 193M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 50M 14M 37M 27% /run/incus_agent
/dev/sda15 105M 6.1M 99M 6% /boot/efi
覆盖根磁盘设备的大小。
incus config device override ubuntu-vm root size=30GiB
重新启动 VM。
incus restart ubuntu-vm
再次检查根磁盘设备的大小。
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/shm
tmpfs 193M 588K 193M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 50M 14M 37M 27% /run/incus_agent
/dev/sda15 105M 6.1M 99M 6% /boot/efi
与实例交互¶
您可以通过在实例中运行命令(包括交互式 shell)或访问实例中的文件来与实例交互。
首先在您的实例中启动一个交互式 shell。
在您的容器中运行
bash
命令。incus exec first -- bash
输入一些命令,例如,显示有关操作系统的详细信息。
cat /etc/*release
退出交互式 shell。
exit
您无需登录到实例并在其中运行命令,而是可以直接从主机运行命令。
例如,您可以在实例上安装一个命令行工具并运行它。
incus exec first -- apt-get update
incus exec first -- apt-get install sl -y
incus exec first -- /usr/games/sl
有关更多信息,请参阅 如何在实例中运行命令。
您也可以访问来自实例的文件并与它们交互。
从容器中拉取一个文件。
incus file pull first/etc/hosts .
向文件添加一个条目。
echo "1.2.3.4 my-example" >> hosts
将文件推回容器。
incus file push hosts first/etc/hosts
使用相同机制访问日志文件。
incus file pull first/var/log/syslog - | less
注意
按
q
退出less
命令。
有关更多信息,请参阅 如何访问实例中的文件。
管理快照¶
您可以创建实例的快照,这使您可以轻松地将实例恢复到以前的状态。
创建一个名为“clean”的快照。
incus snapshot create first clean
确认快照已创建。
incus list first incus info first
注意
incus list
显示快照数量。incus info
显示有关每个快照的信息。破坏容器。
incus exec first -- rm /usr/bin/bash
确认破坏。
incus exec first -- bash
注意
您不会获得 shell,因为您删除了
bash
命令。将容器恢复到快照的状态。
incus snapshot restore first clean
确认一切已恢复正常。
incus exec first -- bash exit
删除快照。
incus snapshot delete first clean
有关更多信息,请参阅 使用快照进行实例备份。