关于镜像

Incus 使用基于镜像的工作流程。每个实例都基于一个镜像,其中包含一个基本操作系统(例如,Linux 发行版)和一些与 Incus 相关的信息。

镜像可从远程镜像存储库获取(有关概述,请参阅 默认镜像服务器),但您也可以创建自己的镜像,这些镜像可以基于现有实例或 rootfs 镜像。

您可以将镜像从远程服务器复制到您的本地镜像存储库,或将本地镜像复制到远程服务器。您也可以使用本地镜像创建远程实例。

每个镜像都由一个指纹(SHA256)标识。为了便于管理镜像,Incus 允许为每个镜像定义一个或多个别名。

缓存

当您使用远程镜像创建实例时,Incus 会下载镜像并将其缓存在本地。它存储在本地镜像存储库中,并设置了缓存标志。镜像作为私有镜像保留在本地,直到:

Incus 通过在每次从镜像生成新实例时更新 last_used_at 镜像属性来跟踪镜像使用情况。

自动更新

Incus 可以自动保持来自远程服务器的镜像更新。

注意

只有通过别名请求的镜像才能更新。如果您通过指纹请求镜像,则请求的是精确的镜像版本。

镜像是否启用自动更新取决于镜像的下载方式

  • 如果在创建实例时下载了镜像并将其缓存,则如果在下载时 images.auto_update_cached 设置为 true(默认值),则会自动更新镜像。

  • 如果使用 incus image copy 命令从远程服务器复制了镜像,则只有在指定了 --auto-update 标志时才会自动更新镜像。

您可以通过 编辑 auto_update 属性 更改镜像的此行为。

在启动时以及每隔 images.auto_update_interval(默认情况下,每六小时)时间,Incus 守护进程会检查存储库中所有标记为自动更新且已记录源服务器的镜像的较新版本。

当找到镜像的新版本时,它将被下载到镜像存储库中。然后,指向旧镜像的所有别名都将移动到新镜像,并且旧镜像将从存储库中删除。

为了不延迟实例创建,Incus 在从缓存的镜像创建实例时不会检查是否存在新版本。这意味着实例可能会为新实例使用镜像的旧版本,直到在下次更新间隔时更新镜像。

特殊镜像属性

requirements 前缀开头的镜像属性(例如,requirements.XYZ)由 Incus 用于确定主机系统与基于镜像创建的实例的兼容性。如果它们不兼容,Incus 不会启动实例。

支持以下要求

requirements.cdrom_agent

如果设置为 true,则表示虚拟机需要添加一个 agent:config 磁盘。

requirements.cdrom_agent
类型

布尔值

requirements.cgroup

如果设置为 v1,则表示镜像需要主机运行 cgroup v1。

requirements.cgroup
类型

字符串

requirements.nesting

如果设置为 true,则表示镜像在没有启用嵌套的情况下无法工作。

requirements.nesting
类型

布尔值

requirements.privileged

如果设置为 false,则表示该镜像无法作为特权容器工作。

requirements.privileged
类型

布尔值

requirements.secureboot

如果设置为 false,则表示该镜像无法在安全启动下启动。

requirements.secureboot
类型

布尔值