常见问题解答

以下部分提供了常见问题的答案。它们解释了如何解决常见问题,并为您指明更详细的信息。

为什么我的实例没有网络访问权限?

很可能您的防火墙阻止了您的实例的网络访问。有关问题和解决方法的更多信息,请参见 如何配置您的防火墙

另一个导致连接问题的原因是在同一主机上运行 Incus 和 Docker。有关如何解决此类问题的说明,请参见 防止 Incus 和 Docker 的连接问题

如何启用 Incus 服务器以进行远程访问?

默认情况下,Incus 服务器无法从网络访问,因为它仅监听本地 Unix 套接字。

您可以按照 如何将 Incus 暴露到网络 中的说明启用远程访问。

当我执行 incus remote add 时,它会要求我提供令牌?

为了能够访问远程 API,客户端必须向 Incus 服务器进行身份验证。

有关如何使用信任令牌进行身份验证的说明,请参见 向 Incus 服务器进行身份验证

为什么我不应该运行特权容器?

特权容器可以执行影响整个主机的操作 - 例如,它可以使用 /sys 中的内容来重置网卡,这将重置整个主机的网卡,从而导致网络故障。有关更多信息,请参见 容器安全

几乎所有操作都可以在非特权容器中运行,或者 - 在需要特殊权限的情况下,例如想要在容器中挂载 NFS 文件系统 - 您可能需要使用绑定挂载。

我可以在容器中绑定挂载我的主目录吗?

是的,您可以使用 磁盘设备 来执行此操作。

incus config device add container-name home disk source=/home/${USER} path=/home/ubuntu

对于非特权容器,您需要确保容器中的用户拥有有效的读/写权限。否则,所有文件将显示为溢出 UID/GID (65536:65536),并且访问任何不可世界可读的内容都会失败。使用以下两种方法之一授予所需的权限

特权容器没有这个问题,因为容器中的所有 UID/GID 与外部相同。但这也是此类特权容器造成大多数安全问题的原因。

如何在 Incus 容器中运行 Docker?

要在 Incus 容器中运行 Docker,将容器的 security.nesting 属性设置为 true

incus config set <container> security.nesting true

请注意,Incus 容器无法加载内核模块,因此,根据您的 Docker 配置,您可能需要让主机加载额外的内核模块。您可以通过设置容器所需的内核模块的逗号分隔列表来做到这一点。

incus config set <container_name> linux.kernel_modules <modules>

此外,在您的容器中创建一个 /.dockerenv 文件可以帮助 Docker 忽略它在嵌套环境中运行时遇到的某些错误。

Incus 客户端(incus)的配置文件存储在哪里?

incus 命令将配置文件存储在 ~/.config/incus 下。

该目录中存储着各种配置文件,例如:

  • client.crt:客户端证书(按需生成)

  • client.key:客户端密钥(按需生成)

  • config.yml:配置文件(有关 remotesaliases 等的信息)

  • clientcerts/:存储每个远程客户端证书的目录

  • servercerts/:存储属于 remotes 的服务器证书的目录

为什么我无法从其他主机 ping 我的 Incus 实例?

许多交换机不允许更改 MAC 地址,并将丢弃具有不正确 MAC 的流量或完全禁用端口。如果您能够从主机 ping Incus 实例,但无法从其他主机 ping 它,则可能是这种原因。

诊断此问题的方法是在上行链路上运行 tcpdump,您将看到 ARP Who has `xx.xx.xx.xx` tell `yy.yy.yy.yy` ,您发送了响应,但它们没有得到确认,或者 ICMP 数据包成功进出,但从未被另一个主机收到。

如何监控 Incus 的运行状态?

要查看有关 Incus 正在执行的操作和正在运行的进程的详细信息,请使用 incus monitor 命令。

例如,要显示所有类型消息的人类可读输出,请输入以下命令:

incus monitor --pretty

查看 incus monitor --help 以获取所有选项,并查看 如何调试 Incus 以获取更多信息。

为什么 Incus 在创建实例时会卡住?

检查您的存储池是否空间不足(通过运行 incus storage info <pool_name>)。在这种情况下,Incus 无法完成解压缩镜像,您尝试创建的实例显示为已停止。

要更深入地了解正在发生的事情,请运行 incus monitor(参见 如何监控 Incus 的运行状态?),并在 sudo dmesg 中检查任何 I/O 错误。

为什么启动容器突然失败?

如果启动容器突然失败,并出现与 cgroup 相关的错误消息(Failed to mount "/sys/fs/cgroup"),这可能是由于在主机上运行了 VPN 客户端。

这对于 Mullvad VPNPrivate Internet Access VPN 都是已知问题,但也可能发生在其他 VPN 客户端上。问题在于 VPN 客户端将 net_cls cgroup1 挂载到 cgroup2 上(Incus 使用 cgroup2)。

解决此问题的最简单方法是停止 VPN 客户端,并使用以下命令卸载 net_cls cgroup1:

umount /sys/fs/cgroup/net_cls

如果您需要保持 VPN 客户端运行,请将 net_cls cgroup1 挂载到其他位置,并相应地重新配置 VPN 客户端。查看 此 Discourse 帖子 以获取有关 Mullvad VPN 的说明。

什么是 incusbr0-mtu 设备?

在 Incus 管理的桥接网络上设置 bridge.mtu 选项时,Incus 将创建一个名为 BRIDGE-mtu 的虚拟网络接口。该接口永远不会用于承载流量,但它具有请求的 MTU 设置,并且被桥接到网络桥接器中。

这将强制桥接器采用该 MTU,并避免桥接器配置的 MTU 随着接口添加到它而发生更改的问题。