Docker 容器化部署:让 NAS 变成万能应用市场
如果说 NAS 的操作系统是地基,那么运行在上面的应用就是一座座高楼。在没有 Docker 之前,每次想装一个服务(比如博客或密码管理器),你都要被各种 Linux 依赖库折磨到吐血。而 Docker,是改变一切的革命性技术。
1. 为什么要用 Docker?
可以把 Docker 想象成货轮上的集装箱。所有的应用、以及它所需的那些复杂的运行库,都被打包进了一个标准尺寸的箱子里(镜像 Image)。
- 环境隔离: 不同的应用之间不会因为依赖冲突互相打架(比如一个要 Python 2,一个要 Python 3)。
- 一键部署: 一行命令或者一段简单的配置,几秒钟就能跑起来一个复杂的架构。
- 随扔随建: 容器跑崩了?直接删掉重新拉一个,只要你的数据没丢,服务瞬间恢复如初。
2. 核心玩法:Docker Compose
如果用命令行敲 docker run -p 80:80 -v ... 会有一大串极其难记的参数。所以高阶玩家全部使用 docker-compose.yml
配置文件来管理容器编排。
所有的配置都写在里面,相当于把启动参数持久化了。比如一键部署一个轻量级测速服务 Speedtest:
version: '3.3'
services:
speedtest:
image: adolfintel/speedtest
container_name: speedtest # 你给容器起的名字
restart: unless-stopped # NAS一开机它就跟着启动
ports:
- '8080:80' # 冒号左边是访问端口,右边是容器内部写死的端口
在同目录下运行 docker-compose up -d 就能启动,运行 docker-compose down 就能删除(但不删数据)。
3. 图形化管理神器:Portainer
对于敲命令行感到恐惧的朋友,NAS 拿到手后的第一件事就是用 Docker 部署一个 Portainer。
它是一个提供网页 Web 端的管理工具。你可以用鼠标点击来拉取镜像、查看容器日志状态、重启容器、编辑 Compose 堆栈等。大部分成品 NAS 厂商内置的 Docker 界面都比较弱,建议统一切换到 Portainer。
4. 装机必备的 5 个黄金容器
Plex / Jellyfin: 搭建私人 Netflix,将各种格式的电影自动刮削封面海报。
Alist: 网盘挂载神器,把阿里云盘、百度网盘、天翼云盘等统统聚合成一个私人云盘。
Vaultwarden (Bitwarden): 自建密码管理器。所有的网页密码、银行卡信息只掌握在你自己的 NAS 手里。
HomeAssistant: 智能家居控制中枢,打通小米、苹果、绿米等不同品牌的设备墙。
Qbittorrent: 大名鼎鼎的 PT/BT 下载工具,搭配订阅功能实现自动追剧下载。
5. 数据持久化 (映射路径) 的铁律
这是 Docker 新手踩得最深的坑。还记得刚才说的"随扔随建"吗?容器(Container)本质上是用来计算和干活的临时打工仔。当你删掉或更新一个容器时,它内部的所有文件会瞬间蒸发!
所以必须使用 Volumes(目录映射) 把容器内的数据文件夹挂载到你的 NAS 实体硬盘 (Host) 上。
volumes:
# 左边是NAS的物理硬盘路径,右边是容器内的固定读取路径
- '/mnt/StoragePool/Movies:/media/movies'
- '/mnt/StoragePool/DockerData/Plex:/config'
最关键的是映射那个叫 config(或 data,各软件情况不同)的目录。只要它映射到 NAS
物理硬盘上了,哪怕你手欠把容器暴力清空了重装,只要重新挂回这根"水管",所有的配置、数据库、电影记录全都在。
总结
代码即基础设备。把所有的 docker-compose.yml 文本文件以及它旁边的 data
数据文件夹做好定期备份,这就是玩转 Docker 的全部安全感所在。这就是为什么说掌握 Docker 决定了你能把 NAS 价值压榨到何种程度的分水岭。