跳转到内容

插件还是容器:怎么选 ​

完成后,遇到「既能装插件、也能用容器跑」的功能,你能很快选定一种,并说得出理由。

先看这张表 ​

你要的是选原因
OMV 自己的能力:磁盘、文件系统、RAID、ZFS、SnapRAID、mergerfs、SMB、NFS、UPS、登录认证插件它们要管磁盘、内核和系统服务,容器做不了,或做不好
有自己 Web 界面的独立应用:影音、相册、下载、网盘、密码管理容器升级、备份、迁移都独立,不和 OMV 或 Debian 的版本绑在一起
想最快用上一个简单工具,不想写 compose 文件官方的容器类插件(FileBrowser、WeTTY、PhotoPrism)一个开关加几个字段,配置由官方维护;代价是可调的地方少
VPN、封禁暴力破解这类要和系统网络打交道的功能两者都行想在 OMV 界面里管理就用插件,想自己掌控版本和配置就用容器
想跑完整的虚拟机KVM 插件,或在 PVE 上另开虚拟机见 KVM 插件

没有特别的理由时,应用用容器,插件只用来扩展 OMV 自己。官方文档也是这个态度,见插件体系。

容器的好处和代价 ​

好处:

  • 依赖都在镜像里,不会和 OMV 的 Debian 软件包冲突。官方文档提到,正是软件包版本更新带来的依赖冲突,曾让 OMV 或其他软件无法使用。
  • 升级和回滚只动一个容器。OMV 大版本升级时,容器和 OMV 的版本基本解耦。
  • 出问题时删掉容器即可,不碰系统包。

代价:

  • 要先装好 Docker 和 Compose 插件,并学会写 compose 文件、处理端口与权限。
  • 每个容器是独立的进程,带数据库的应用还要再起数据库容器,比插件吃资源。
  • omv-extras wiki 的观察:大多数「Docker 不工作」的问题和 OMV、Compose 插件无关,而是架构、网络模式、80 端口冲突和权限。

同一个功能的两种做法 ​

功能插件Compose 容器要注意
网页文件管理官方 openmediavault-filebrowser:Podman 运行 FileBrowser Quantum(镜像 gtstef/filebrowser:stable),前面带一个 Caddy 反代,默认端口 3670,首次登录账号是 admin:admin,要立刻改Compose 示例 filebrowser:上游的 filebrowser/filebrowser:latest,端口 8080,以 1000:100 用户运行这是两个不同的项目(Quantum 是分支),界面和功能不同
照片管理官方 openmediavault-photoprism:Podman 运行,另带 mariadb:11 容器,端口 2342,首次登录 admin:admin,在表单里选原图目录Compose 示例 photoprism:上游镜像,端口也是 2342,管理员密码写在环境变量里,示例里是占位值,必须改掉两边默认端口相同,同时装会冲突
浏览器终端、杀毒、VPN、封禁官方 wetty、clamav,omv-extras 的 wireguard、fail2banCompose 示例里也有 wetty、clamav、wireguard、fail2ban、tailscale见下表

容器示例会随 omv-extras 更新,以 Compose 插件里 从示例添加 能看到的为准。示例里常用 latest 标签,方便,但会在你不知情时换版本,认真使用时固定版本号。

从五个角度比较 ​

角度插件容器
装起来点一下,依赖自动处理写或选 compose 文件,建共享文件夹和用户,处理端口与权限
升级跟系统更新走,版本由维护者定。官方插件的容器镜像可以在 服务 → Podman(Services → Podman)里拉取,是否自动更新本站未核实自己控制。Compose 的计划任务可以先备份、再拉新镜像并重建
备份插件的设置在 OMV 配置里,数据在你指定的共享文件夹,走常规备份。官方插件的 Podman 容器不在 Compose 的备份范围内Compose 的计划备份覆盖通过它管理的容器,默认只带不超过 1 GB 的卷,rsync 后端每次覆盖上一份,详见更新与备份容器
OMV 大版本升级需要这个插件有对应的新版本只要 Docker 引擎能用就行
卸载和出问题卸载会清除配置,并连带卸载依赖它的插件,见安装、更新与卸载插件删容器即可,数据在你自己的目录里

另外,Compose 插件只完整管理通过它的界面创建的容器;在命令行里手动创建的容器,插件里看不全,见Docker 与应用。

两者并存时要注意 ​

  • Podman 和 Docker 是两套环境。 官方容器类插件跑在 Podman 里,Compose 插件用的是 Docker,镜像、容器、网络互相看不到。它们共享的是宿主机的端口和资源。
  • 端口冲突。 官方插件的默认端口:FileBrowser 3670、PhotoPrism 2342、WeTTY 2222、OwnTone 3689。Compose 示例里的端口可能撞上,装之前在 Compose 的端口页和 ss -tlnp 里看一眼。
  • 不要两边各装一份指向同一个数据目录。 数据库和索引会被两个版本同时写。
  • 官方的 Podman 管理界面和 K3s,见官方容器方案:Podman 与 Kubernetes 插件。

检查结果 ​

选定之后自查三件事:

  1. 端口没有冲突:
sh
# 在 OMV 的 shell 里,以 root 身份,只读
ss -tlnp
  1. 数据放在你指定的共享文件夹里,而且已被备份策略覆盖。
  2. 容器版的权限用专用用户,不是 root,见容器权限。

常见问题 ​

已经装了插件,想换成容器版。 先备份插件的数据目录,在容器里把数据目录指向它(要先确认两个版本的数据格式兼容),确认能用之后,再卸载插件。两边的数据能否互通因应用而异,不保证。

为什么官方插件和 Compose 里有重名的应用。 官方的容器类插件是为了让你不写 compose 也能一键用上,Compose 示例是社区给想要更多控制的人准备的,它们是各自独立的两份配置,甚至是不同的上游项目。

没有理由选插件,怎么办。 选容器。

参考资料 ​

  • OMV 文档:插件。
  • omv-extras wiki:Docker in OMV 8、Compose 插件手册。
  • OMV 源码:官方容器类插件(deb/openmediavault-filebrowser、-photoprism、-wetty、-owntone)的表单和 Salt 状态。
  • omv-extras 的 packages 仓库:compose-files 里的示例。

OpenMediaVault 非官方中文使用指南,与 openmediavault 项目及其开发者无隶属关系。