MoleSDN
NAS 远程访问

OMV 装 Docker 教程:在 NAS 上跑 Jellyfin / Nextcloud(5 部曲⑤)

在 OMV NAS 上装 Docker 跑家庭影音、私有云、PT 下载:装 OMV-Extras、装 openmediavault-compose 插件、装 Docker 引擎,再用 docker run 或 docker-compose 启动应用。OMV 5 部曲第 ⑤ 篇(完结)。

OMV 装 Docker 教程:在 NAS 上跑 Jellyfin / Nextcloud(5 部曲⑤)

这是 OMV 5 部曲的第 ⑤ 篇(完结)

💡 OMV 5 部曲进度

上一篇讲了 KVM 虚拟机——把整套操作系统装到 OMV 里跑。但对于绝大多数家庭应用场景,虚拟机太重了:

  • 跑个 Jellyfin 看电影,没必要起一整台 Linux
  • 跑个 Nextcloud 同步照片,没必要装一台 Web 服务器

Docker 容器 就是为这种场景准备的——比虚拟机轻量得多,资源占用少,部署速度快,一条 docker run 命令就能起一个完整应用。


Docker 是什么(30 秒讲清)

把应用和它需要的所有依赖打包成一个标准化的盒子——这个盒子就是 Docker 镜像。

  • 镜像(Image) — 可执行的应用包,比如「Jellyfin 镜像」「Nextcloud 镜像」
  • 容器(Container) — 镜像跑起来的实例,类似「把可执行文件运行起来变成进程」
  • Docker Hub — 全球公共镜像仓库,几乎所有开源应用都在这里有官方镜像

跑 Docker 应用的标准三步:

找镜像 (docker pull)  →  起容器 (docker run / compose)  →  浏览器访问

家庭 NAS 上典型的 Docker 应用

家庭 NAS Docker 应用全景图

应用类别 代表项目 用途
影音 Jellyfin / Emby / Plex 家庭多媒体中心,手机/电视访问 NAS 里的电影
私有云 Nextcloud / Seafile 替代 iCloud / 百度网盘
下载 qBittorrent / Aria2 / Transmission PT 下载、BT 下载、磁力链
自动化 Home Assistant / Node-RED 智能家居中枢
工具 Bitwarden / Vaultwarden 自托管密码管理
远程访问 MoleSDN 容器版 详见 ③ 异地访问

你需要准备什么

说明
一台跑着 OMV 的 NAS 没装好的看 ① 系统安装
OMV-Extras 已安装 上一篇 ④ KVM 虚拟机 装过的话直接跳过
至少 4G 内存 跑多个容器推荐 8G+
一块独立数据盘 Docker 镜像、容器数据、应用数据都需要持久化空间

第一步:安装 OMV-Extras

如果上一篇 ④ KVM 虚拟机 已经装过 OMV-Extras,直接跳到第二步

没装过的话,SSH 到 OMV,执行:

wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash

详细步骤、GitHub 下载失败的应对方法都在 ④ KVM 虚拟机 第一步里讲过,这里不重复。

装完后 OMV Web 后台 系统 → omv-extras 出现菜单,勾选 Docker repo 并保存:

启用 Docker repo


第二步:安装 openmediavault-compose 插件

这是 OMV 6/7 上官方推荐的 Docker 管理插件,比老的 openmediavault-docker-gui 维护得更好。

系统 → 插件,搜索 compose,找到 openmediavault-compose 安装:

安装 compose 插件

⚠️ 安装过程中可能因网络问题从 GitHub 下载 yq 工具失败。报错的话手动装:

bash wget https://github.com/mikefarah/yq/releases/download/v4.35.2/yq_linux_amd64 chmod +x yq_linux_amd64 sudo mv yq_linux_amd64 /usr/local/bin/yq

然后重新跑插件安装。OMV 7 上这个问题罕见,OMV 6 偶发。

装好后 服务 菜单里出现 Compose 子项:

Compose 菜单出现


第三步:安装 Docker 引擎

服务 → Compose → 设置,找到 Docker 引擎安装入口,点击安装:

安装 Docker 引擎

OMV 会自动从 Docker 官方源装 docker-cecontainerddocker-compose 等组件。装完后回到设置页,Docker 引擎状态显示「已运行」

Docker 引擎已运行

到这一步 OMV 上的 Docker 环境就准备好了。

配置 Docker 数据目录(重要)

默认 Docker 把所有镜像和容器数据放在 /var/lib/docker——这是系统盘上的目录。系统盘通常很小(你装系统时分的 32-64G),跑几个应用很快就满。

服务 → Compose → 设置,把「Docker 数据根目录」改到数据盘上的一个独立目录(如 /srv/dev-disk-by-uuid-xxx/docker/):

改 Docker 数据目录

保存 + 应用。这一步不做的话,跑两三个应用系统盘就爆


第四步:获取镜像(docker pull)

回到 SSH 终端,跑:

docker pull jellyfin/jellyfin

docker pull 会从 Docker Hub 拉镜像下来。第一次拉一个应用会比较慢(300MB-1GB),后续启动很快。

docker pull 输出

⚠️ 国内访问 Docker Hub 慢甚至超时。处理:

  • 配 Docker 镜像加速器:编辑 /etc/docker/daemon.json,加入国内镜像源(阿里云 / 网易 / DaoCloud 等),重启 Docker
  • 离线导入:从能上 Docker Hub 的机器 docker save 镜像成 tar,传到 OMV docker load -i xxx.tar

镜像下来之后用 docker images 能看到:

docker images

docker images 列表


第五步:运行容器(docker run)

最简单的启动方式:

docker run -d \
  --name=jellyfin \
  -p 8096:8096 \
  -v /srv/dev-disk-by-uuid-xxx/media:/media \
  -v /srv/dev-disk-by-uuid-xxx/jellyfin-config:/config \
  jellyfin/jellyfin

docker run 命令

关键参数解释

参数 作用
-d 后台运行(detached),容器在后台跑
--name=jellyfin 给容器起名,方便后续 docker stop jellyfin 之类操作
-p 8096:8096 端口映射:把容器内 8096 端口映射到 OMV 主机的 8096 端口,浏览器访问主机的这个端口
-v /主机路径:/容器内路径 卷映射:把 OMV 主机的目录挂到容器内。关键——没这个的话容器一删,里面的数据全丢
--net=host 网络模式 host,容器跟主机共享网络栈。家用一般不用——直接用 -p 映射端口更简单

💡 新手最容易忽略的点是 -v 卷映射。容器是「无状态」的,里面的数据默认随容器删除一起消失。把要持久化的数据(配置、应用数据、媒体库)通通用 -v 映射到 OMV 数据盘上——这样容器重建、镜像升级,数据都不会丢。

推荐用 docker-compose 而不是 docker run

docker run 命令长串参数不好维护。官方推荐用 docker-compose.yml 配置文件管理

# /srv/dev-disk-by-uuid-xxx/compose/jellyfin/docker-compose.yml
services:
  jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    ports:
      - "8096:8096"
    volumes:
      - /srv/dev-disk-by-uuid-xxx/media:/media
      - /srv/dev-disk-by-uuid-xxx/jellyfin-config:/config
    restart: unless-stopped

然后:

cd /srv/dev-disk-by-uuid-xxx/compose/jellyfin/
docker compose up -d

启动、停止、升级、备份都更方便。OMV 的 Compose 插件 Web 后台也直接管理 YAML 文件,跟手敲命令效果一样。


第六步:浏览器访问容器应用

容器跑起来之后,浏览器访问:

http://<OMV 局域网 IP>:<-p 映射的主机端口>

例如 Jellyfin 是 http://192.168.1.50:8096

Jellyfin Web 界面

进首次启动向导,选语言、添加媒体库(指向你 -v 映射进去的 /media 目录),就能开始用了。


常用 Docker 命令速查

docker ps                       # 列出运行中的容器
docker ps -a                    # 列出所有容器(含已停止的)
docker images                   # 列出本地所有镜像
docker stop <容器名>            # 停止容器
docker start <容器名>           # 启动已停止的容器
docker restart <容器名>         # 重启容器
docker rm <容器名>              # 删除容器(数据已挂到外部 -v 的话不会丢)
docker rmi <镜像名>             # 删除镜像
docker logs <容器名>            # 查看容器日志(最快的排错工具)
docker logs -f <容器名>         # 实时跟踪日志
docker exec -it <容器名> bash   # 进入容器内部命令行
docker pull <镜像名>            # 拉取/更新镜像
docker compose up -d            # 启动 docker-compose 定义的所有服务
docker compose down             # 停止并清理 docker-compose 服务
docker system prune             # 清理不再使用的镜像/容器/网络(释放空间)

💡 应用跑不起来时,第一件事永远是 docker logs <容器名>。绝大多数问题(端口冲突、路径权限、配置错误)都会在日志里直接打出来。


常见问题

问题 1:docker pull 一直转 / 超时

国内访问 Docker Hub 慢。处理:

  • 配国内镜像加速:编辑 /etc/docker/daemon.json,加 "registry-mirrors",重启 Docker(systemctl restart docker
  • 找到的镜像加速地址定期失效,可以搜「Docker 镜像加速 2026」找最新可用源

问题 2:容器跑起来但浏览器访问不到

排查顺序:

  1. 容器真的在跑吗docker ps,看 STATUS 列是不是 Up
  2. 端口映射对吗docker ps 的 PORTS 列要显示 0.0.0.0:8096->8096/tcp 这种
  3. OMV 防火墙是否拦了端口:默认不拦,但自定义防火墙规则可能拦到
  4. 看容器日志docker logs <容器名> 看是不是应用自己启动失败

问题 3:升级容器后数据丢了

90% 是因为没用 -v 把数据持久化到 OMV 主机。任何重要数据都要 -v 出来——配置文件、用户数据、应用数据库、媒体库索引。

正确的升级流程

docker pull jellyfin/jellyfin   # 拉最新镜像
docker stop jellyfin            # 停旧容器
docker rm jellyfin              # 删旧容器(数据已经 -v 出来了,不会丢)
docker run -d ...               # 用新镜像 + 相同的 -v 参数重新起

更优雅的方式是用 docker-compose——docker compose pull && docker compose up -d 一行搞定。

问题 4:磁盘空间被占满(/var/lib/docker 撑爆)

如果当初没改 Docker 数据根目录,时间长了系统盘会爆。处理:

docker system prune -a          # 清理所有未使用的镜像和容器

长期方案:回第三步把 Docker 数据根目录改到数据盘上。

问题 5:容器之间能互相通信吗?

可以。Docker 默认有一个 bridge 网络,所有不指定网络的容器都在同一个网络里,能用容器名互相 ping。

如果用 docker-compose,同一个 compose 文件里的服务之间默认在同一个网络,可以直接用 服务名 当主机名互相访问(比如 Nextcloud 里数据库连接填 db 而不是 IP)。


总结与延伸

到这里你的 OMV NAS 就真正变成了多功能家庭服务器

  • 影音中心(Jellyfin / Emby)
  • 私有云(Nextcloud / Seafile)
  • PT 下载机(qBittorrent / Aria2)
  • 智能家居(Home Assistant)
  • ……几乎所有开源应用都能在几分钟内跑起来

OMV 5 部曲完整回顾

5 部曲跟完,你就拥有了一台远胜成品 NAS 的家庭服务器——完全自主、可玩性极高、成本却低得多。

用 Docker 跑 MoleSDN 客户端

如果你已经按 ③ 异地访问 装过 MoleSDN 二进制版本,那就用现有的;如果想试容器版的 MoleSDN,可以参考:

docker run -d \
  --net=host \
  --name=molesdn \
  --cap-add=NET_ADMIN \
  -e USERNAME=<你的 MoleSDN 账户> \
  -e PASSWORD=<你的密码> \
  molesdn/molesdn

容器版的好处是跟 OMV 系统其他组件隔离更彻底——升级、回滚、删除都更干净。

异地访问,1 分钟入门

NAS 上跑了这么多服务,最常见的下一个问题就是「出门在外怎么访问」。MoleSDN 的 免费档 提供 3 台设备额度,所有 Docker 应用(Jellyfin、Nextcloud、qBittorrent Web 等)都能通过虚拟内网 IP 访问,跟在家局域网下体验一致。

家用宽带 + 移动网络组合下,普通直连有时打不通——超级鼹鼠 / 智能路由 / 可靠洞洞 几个进阶能力专门为这类场景设计。还没用过 MoleSDN?先看 快速上手,全程 1 分钟。

OMV 5 部曲到这里就完了。祝玩得开心。