如何3步搞定xiaomusic的Docker容器用户权限:新手指南
【免费下载链接】xiaomusic使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic
当你在UNRAID上第一次用Docker部署xiaomusic时,大概率会碰到下载的音乐在宿主机上全是root所有、普通用户打不开的情况。这就是Docker容器用户权限没配对,跟着下面步骤走,10分钟能解决。
快速上手:30秒指定容器运行用户
别急着改一堆配置,先用一条命令验证思路:
docker run -d --name xiaomusic \ -u 1000:1000 \ -v /mnt/user/appdata/xiaomusic:/app/music \ -p 8090:8090 xiaomusic:latest这条命令的作用是:以UID、GID都是1000的用户身份跑容器,音乐目录挂到/app/music,8090是服务端口,细节见 Dockerfile。跑起来后,新下载歌曲的属主就是1000,不再是root。
权限对齐后,网页端的下载、收藏这些标签页里的歌曲就都能正常管理和清理了。
进阶配置:Docker容器用户权限的三种持久化方式
先用id查清宿主机真实UID
适用场景:启动前搞清楚1000:1000到底该填什么,别抄网上的数字。
id # 查看当前用户的UID/GID stat -c '%u %g' /mnt/user/music # 查看音乐目录实际属主注意:UNRAID每个share的UID可能不一样,以stat查到的目录属主为准。
Docker Compose持久化配置用户权限
适用场景:长期部署,改动要写进文件而不是每次敲命令。
services: xiaomusic: image: xiaomusic:latest user: "1000:1000"改完之后执行docker compose up -d重建容器就生效了。注意user的值必须带引号,这个坑下面会细说。
宿主机目录属主预先对齐
适用场景:容器用户配了,但老目录还是root的,新文件能写、老文件打不开。
chown -R 1000:1000 /mnt/user/appdata/xiaomusic chmod -R 750 /mnt/user/appdata/xiaomusic执行一次即可,之后容器内写的文件自动就是1000属主,不用反复chown。目录里会生成download等子目录(对应 config-example.json 里的download_path),一并处理最省心。
踩坑提醒
⚠️ 坑点1:配了-u还是报权限拒绝 容器日志提示写/app/music失败,多半是宿主机目录属主还是root,非root用户没写权限。先执行chown -R 1000:1000把目录属主改掉再启动容器。
⚠️ 坑点2:Compose里user没加引号 up的时候报"mapping values are not allowed in this context",是因为1000:1000不带引号被YAML当成了嵌套结构。改成user: "1000:1000"就好。
⚠️ 坑点3:以为容器root和宿主机root没关系 其实容器里的root(UID 0)会直接落到宿主机的root上,文件全都变root所有。加上-u 1000:1000再docker compose up -d,属主就正了。
记住:容器里的UID对齐宿主机,权限问题就消失了一大半。
【免费下载链接】xiaomusic使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考