clouddrive2 中文文档 下载 App

容器媒体库看不见挂载盘的 rslave 解法

症状

原因一句话

Docker 卷映射的默认传播模式只反映容器启动当时的挂载状态。挂载服务的 FUSE 挂载出现在容器启动之后,默认模式就把这个晚到的挂载藏起来了——这是 Docker 的传播语义,不是谁的 bug。

解法:卷映射加 rslave

给媒体库容器里映射挂载目录的那个卷,尾部加上 :rslave:

services:
  emby:
    image: emby/embyserver
    volumes:
      - /CloudNAS:/CloudNAS:rslave   # 关键就是这一处的尾部标记
      - ./config:/config

CLI 写法同理:-v /CloudNAS:/CloudNAS:rslave。改完重建容器(compose down 再 up,或删掉重建),改参数对已运行的容器不生效。

前提别忘了

rslave 解决的是「晚到的挂载对容器可见」,它有个前提:宿主机上那个目录本身要先能看到挂载。宿主机看不见的,先回去处理传播属性——见容器挂载看不见时的共享传播排查。两层排查的顺序:

  1. 宿主机目录里有没有挂载 → 没有就是传播没配 shared
  2. 宿主机有、容器里没有 → 给媒体库容器加 rslave

顺带的容器实践

改完重建后,媒体库正常扫库的验收方式:Emby 控制台里看到文件数、手动触发一次扫描、随便点开一部片确认能拖进度条。