这是 OMV 5 部曲的第 ⑤ 篇(完结)
💡 OMV 5 部曲进度
- ① 系统安装
- ② 共享文件系统配置
- ③ 异地访问
- ④ KVM 虚拟机
- ⑤ Docker 容器(本文)
上一篇讲了 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 应用

| 应用类别 | 代表项目 | 用途 |
|---|---|---|
| 影音 | 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 并保存:

第二步:安装 openmediavault-compose 插件
这是 OMV 6/7 上官方推荐的 Docker 管理插件,比老的 openmediavault-docker-gui 维护得更好。
系统 → 插件,搜索 compose,找到 openmediavault-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 子项:

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

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

到这一步 OMV 上的 Docker 环境就准备好了。
配置 Docker 数据目录(重要)
默认 Docker 把所有镜像和容器数据放在 /var/lib/docker——这是系统盘上的目录。系统盘通常很小(你装系统时分的 32-64G),跑几个应用很快就满。
服务 → Compose → 设置,把「Docker 数据根目录」改到数据盘上的一个独立目录(如 /srv/dev-disk-by-uuid-xxx/docker/):

保存 + 应用。这一步不做的话,跑两三个应用系统盘就爆。
第四步:获取镜像(docker pull)
回到 SSH 终端,跑:
docker pull jellyfin/jellyfin
docker pull 会从 Docker Hub 拉镜像下来。第一次拉一个应用会比较慢(300MB-1GB),后续启动很快。

⚠️ 国内访问 Docker Hub 慢甚至超时。处理:
- 配 Docker 镜像加速器:编辑
/etc/docker/daemon.json,加入国内镜像源(阿里云 / 网易 / DaoCloud 等),重启 Docker- 离线导入:从能上 Docker Hub 的机器
docker save镜像成 tar,传到 OMVdocker load -i xxx.tar
镜像下来之后用 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

关键参数解释
| 参数 | 作用 |
|---|---|
-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:

进首次启动向导,选语言、添加媒体库(指向你 -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:容器跑起来但浏览器访问不到
排查顺序:
- 容器真的在跑吗:
docker ps,看 STATUS 列是不是Up - 端口映射对吗:
docker ps的 PORTS 列要显示0.0.0.0:8096->8096/tcp这种 - OMV 防火墙是否拦了端口:默认不拦,但自定义防火墙规则可能拦到
- 看容器日志:
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 部曲完整回顾
- ① 系统安装
- ② 共享文件系统配置
- ③ 异地访问
- ④ KVM 虚拟机
- ⑤ Docker 容器(本文)
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 部曲到这里就完了。祝玩得开心。