Docker目录映射原理
核心建议: 在部署 Docker 版 qBittorrent 时,强烈建议其容器内路径映射与 MoviePilot 保持一致(例如统一映射至 /media)。这种“路径对等”的设计能从物理层面消除复杂的路径转换。
深度解析: 尽管 MoviePilot v2.8.8 引入了“下载器路径映射”功能,但若能通过标准化的目录部署实现路径对齐,该功能则显得并无必要。即便使用 NAS 套件版下载器,遵循“目录一致”原则依然是最高效的避坑准则。至于配置冗余且繁琐的“下载器分类管理”方案,并不推荐尝试。
过程深度解析(由Gemini生成)
1. 路径指令的传递(核心步骤)
当 MP 找到种子后,它不是简单地把种子丢给 QB,而是发送了一个复杂的 API 指令。
MP 的指令内容: “嘿 QB,去下载这个种子,下完之后把它存放在我的这个路径:
/media/downloads。”注意点: MP 传递的是它自己容器内部看到的路径。
2. 为什么映射必须一致?
想象一下:
MP 的映射:
/宿主机/电影/mediaQB 的映射:
/宿主机/电影/downloads
这时 MP 发令:“存到 /media”。
QB 接收指令后,会尝试在自己的家(容器)里找 /media。但由于 QB 映射的是 /downloads,它家里根本没有 /media 这个文件夹。
结果: QB 会报错“没有权限”或“路径不存在”,或者直接在容器内部创建一个虚拟的 /media(这会导致文件写在容器系统盘里,撑爆空间且宿主机看不到)。
3. 实时监控的闭环
当 QB 开始下载时,MP 会通过 API 询问:“刚才那个任务进度如何了?”
QB 回复:“正在下载,目前在 /media/downloads/阿凡达.mkv”。
因为 MP 也有同样的 /media/downloads 映射,它就能立刻到这个位置去“盯着”这个文件。
4. 硬连接的“最后一公里”
下载完成后,MP 需要执行硬连接:
源地址:
/media/downloads/阿凡达.mkv目标地址:
/media/links/电影/阿凡达/阿凡达.mkv
如果路径不一致: MP 根本找不到源地址的文件,硬连接会直接失败,日志里会报错“文件不存在”。
总结:一句话避坑
MP 给 QB 传的是“容器内部路径名”,所以这两个容器对同一个物理文件夹的“称呼(映射名)”必须一模一样。
检查建议:
打开你的 Docker 设置,确保:
MoviePilot 的下载卷映射是:
/你的物理路径:/mediaqBittorrent 的下载卷映射也是:
/你的物理路径:/media
这样 MP 喊出的每一个路径,QB 都能听得懂且找得到。