You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose挂载SMB共享无写入权限问题求助

解决Docker挂载Unraid SMB卷只读问题

以下是针对你遇到的只读挂载问题的具体排查和解决步骤:

  • 修改CIFS挂载参数,指定UID/GID
    Docker容器的PUID/PGID环境变量是给容器内应用用的,但CIFS卷的挂载权限由挂载选项直接控制。你需要在卷的driver_opts里添加uid=1000,gid=1000,让挂载后的文件所有者匹配容器内的用户:

    volumes:
      downloads:
        driver_opts:
          type: cifs
          o: username=COOLUSERNAMEHERE,password=SUPERSECRETPASSWORD,vers=3,uid=1000,gid=1000
          device: //192.168.0.110/downloads
    

    注意:修改卷参数后需要先删除旧卷再重新部署,因为Docker卷创建后参数无法修改:

    docker volume rm downloads
    docker-compose up -d
    
  • 验证Unraid共享权限设置
    确认Unraid的SMB共享配置:

    • 关闭“允许匿名访问”(如果开启的话,匿名用户可能默认只读),确保使用你指定的用户身份访问共享
    • 检查该用户在Unraid中对downloads文件夹的权限确实是读写,而不是只读
    • 确认共享的“安全设置”中没有限制写入的规则
  • 手动挂载测试,排除Docker干扰
    在树莓派上直接挂载SMB共享,测试是否能写入:

    sudo mkdir -p /tmp/testsmb
    sudo mount -t cifs //192.168.0.110/downloads /tmp/testsmb -o username=COOLUSERNAMEHERE,password=SUPERSECRETPASSWORD,vers=3,uid=1000,gid=1000
    # 尝试创建文件
    touch /tmp/testsmb/testfile.txt
    

    如果这个操作失败,说明问题出在Unraid的SMB配置或网络权限上;如果成功,说明是Docker卷的挂载参数问题,回到第一步重新配置。

  • 检查容器内目录权限
    进入容器查看挂载目录的权限:

    docker exec -it myservice bash
    ls -ld /downloads
    

    输出应该显示所有者为1000:1000,如果不是,说明挂载参数未生效,需要重新创建卷并部署。

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:54:27