群晖Docker中找不到/var/opt/mssql目录及映射启动失败求助
解决方案:群晖Docker中SQL Server 2022目录映射与权限问题
问题根源说明
/var/opt/mssql是容器内部路径:你SSH登录的是群晖NAS主机,而这个路径属于SQL Server容器内部的文件系统,所以在主机的/var下找不到opt目录是正常现象。- 权限拒绝的核心原因:SQL Server 2022默认以非root用户
mssql(UID=10001,GID=10001)运行,直接映射群晖共享目录时,该用户没有目录的读写权限,导致无法创建必要的系统目录。
具体解决步骤
步骤1:在群晖上创建专用共享目录
- 打开群晖DSM,进入控制面板 > 共享文件夹,新建一个共享文件夹(比如命名为
mssql_data),建议关闭“启用回收站”避免权限冲突。
步骤2:设置共享目录的权限(关键)
- 进入该共享文件夹的权限设置,点击新增,选择系统内部用户,手动添加UID=10001、GID=10001的用户,赋予其读取/写入/修改/删除的完全权限。
- 或者通过SSH登录群晖主机,执行以下命令修改目录权限(假设共享目录路径为
/volume1/mssql_data):chown -R 10001:10001 /volume1/mssql_data chmod -R 755 /volume1/mssql_data
步骤3:重新配置Docker容器的目录映射
- 停止运行中的SQL Server容器,进入容器的编辑 > 卷设置:
- 删除之前错误的映射,新增一条映射:
- 主机路径:选择刚创建的
/volume1/mssql_data - 容器路径:填写
/var/opt/mssql
- 主机路径:选择刚创建的
- 删除之前错误的映射,新增一条映射:
- 保存配置后重启容器。
步骤4:验证容器运行与数据路径
- 容器启动成功后,连接SQL Server执行
select * from sys.master_files,确认physical_name指向容器内的/var/opt/mssql/data,此时该路径已映射到群晖共享目录,数据会持久化保存。
备选方案:临时以root用户运行(不推荐生产环境)
如果是测试场景,可以在容器启动参数中添加-e MSSQL_USER=root和-e MSSQL_SA_PASSWORD=你的SA密码,强制以root用户运行跳过权限检查,但这会带来安全风险,生产环境禁止使用。
内容的提问来源于stack exchange,提问作者informx
相关产品推荐
相关产品推荐

