第 4 篇 / 共 8 篇
04|KVM 虚拟机、LXC 容器、Docker 与硬件直通的安全边界
知识分类:虚拟化与隔离|2026-10-17 整理|原则已按 Proxmox 官方文档核实;历史实例配置不作为实测。
一、何时用 VM,何时用 LXC
KVM/QEMU VM 拥有独立客户机内核,更适合路由系统、非 Linux 客体、复杂驱动或强隔离场景。LXC 共享宿主 Linux 内核,开销通常较低,适合受信任的 Linux 服务,但其安全边界不同于完整 VM。不要把“Docker 运行在 LXC 中”自动解释成“与宿主完全隔离”。
| 场景 | 倾向 | 关键原因 |
|---|---|---|
| 主路由或独立操作系统 | VM | 系统内核、网口与重启边界清晰 |
| 受信任的媒体服务 | 非特权 LXC 可评估 | 较轻量;需解决设备、目录映射 |
| 不受信任的第三方容器/脚本 | VM 优先 | 更强的隔离边界 |
| 多层 Docker、复杂网络/内核能力 | 视兼容性选 VM | LXC 内嵌 Docker 对 nesting/设备等有要求 |
| PVE 只读审计代理 | 低权限容器或独立服务 | 无宿主 root,无任意命令执行 |
二、非特权 LXC 是默认出发点
非特权容器利用 Linux user namespace,将容器 root 映射到宿主的非特权 UID。对于业务容器,应尽量保留 AppArmor、seccomp、cgroup 隔离,采用最小 capabilities 和精确目录挂载。历史笔记推荐“创建特权 LXC + lxc.apparmor.profile: unconfined + 设备大范围放行”属于高风险路径,不能通用部署。
只读核验:
pct list
pct config <CT_ID> # 按现场确认的单个实例执行
qm config <VM_ID>
检查 unprivileged、features、lxc.* 自定义配置、挂载权限、网络接口与开机启动。历史上容器曾出现 mp0(知识库)与 mp1(媒体存储)的不同配置,必须以现场配置和 findmnt 两份证据交叉验证。仅看到 onboot: 1 不能证明依赖存储在容器启动前已可用。
三、挂载、UID 映射与权限
LXC bind mount 将宿主目录映射进容器;它不是副本,更不是备份。要为共享目录单独划分宿主路径,避免将 /etc、/root、/var、/ 等敏感路径整体映射进去。非特权容器访问共享目录时,需核查 UID/GID 映射、ACL 和目录实际属主;权限不足时不应通过 chmod -R 777 或改成特权容器“解决”。
Proxmox 官方明确:LXC bind mount 内容不会被 vzdump 备份。独立媒体数据必须由 NAS/宿主存储专项保护。
四、GPU/PCIe 直通与 SR-IOV
PCI 直通(VFIO)使 VM 取得设备或功能的访问权;IOMMU 分组、主板固件、内核驱动及设备是否支持复位,会直接影响可用性。SR-IOV 将一个物理功能(PF)划分为虚拟功能(VF),前提是硬件与驱动正确支持;它不是任何 Intel 核显或任何 Linux 内核都默认支持的功能。
历史资料要求固定旧内核、强制安装第三方 i915-sriov-dkms、设固定 i915.max_vfs 值。此方法强依赖显卡 PCI ID、DKMS 版本与内核,且改动宿主启动,在未确认芯片支持矩阵、引导方式、回滚内核和维护窗口之前,不应执行。LXC 的设备节点共享与 VM 的 PCI passthrough 不是同一个技术动作。不要为追求媒体硬解而牺牲整个宿主稳定性。
五、更新/重启的操作顺序
- 只读获取当前 CT/VM 配置和应用依赖;核查备份是否覆盖相关挂载。
- 明确只修改哪一台实例,避免顺带修改主路由或 NAS。
- 审核影响面:容器重启可能中断媒体、下载、自动化任务。
- 有审批后先在非生产副本测试,验证设备和服务,再切换正式配置。
- 出现无法启动、权限错乱或数据读写异常,应停止继续变更,按原配置单项回滚。
关联资料与验证依据
- 内部资料:《pve lxc安装docker和portainer.txt》《pve lxc安装immortalwrt.txt》《SR-IOV开启重点.txt》《PVE安全整改中文操作手册》。
- 官方:https://github.com/proxmox/pve-docs/blob/master/pct.adoc
- 官方:https://www.proxmox.com/en/downloads/proxmox-virtual-environment/documentation/proxmox-ve-admin-guide-for-8-x
结论:保留有用的设备、容器配置概念,废弃“特权 + 关闭保护 + 复制旧参数”的捷径。
2026-10-17 第二阶段核验补充(发布前确认)
- 最新知识库确认多个服务仍使用 LXC 容器;LXC bind mount 的备份范围与系统卷必须分开理解。
- 2026-10-16 fnOS 系统盘隔离恢复时,恢复出的临时 VM 因原 GPU 直通设备冲突首次启动失败;删除临时恢复 VM 的直通项后才启动 QEMU。这是明确的恢复前直通冲突案例,不应解读成实际生产 GPU 故障。
- 原文 SR-IOV 配置仍只能作为原理介绍,尚未在本轮验证当前 VF 映射、驱动版本或媒体硬解情况。