Windows容器中Srvnet服务无法启动,如何开启文件共享?
解决Windows容器srvnet驱动启动失败导致文件共享异常的问题
1. 给容器开启特权模式
Windows容器默认权限不足以加载srvnet这类内核驱动,启动容器时必须添加--privileged参数,示例命令:
docker run -it --privileged mcr.microsoft.com/windows/servercore:ltsc2019 powershell
如果是已运行的容器,只能删除后重新创建带特权参数的实例——运行中的容器无法修改权限模式。
2. 手动尝试加载srvnet驱动
进入容器的PowerShell,执行以下命令手动加载驱动:
sc.exe create srvnet type= kernel start= demand binpath= "\SystemRoot\System32\drivers\srvnet.sys" sc.exe start srvnet
若启动失败,通过sc.exe query srvnet查看错误码,对应排查:
- 错误1058:检查
C:\Windows\System32\drivers\srvnet.sys是否存在,若缺失,从同版本Windows主机复制该文件到对应路径(必须保证版本一致)。 - 错误1068:执行
sc.exe qc srvnet查看DEPENDENCIES字段,确认所有依赖驱动均已启动。
3. 修复lanmanserver服务依赖链
- 先确认Samss服务状态:
sc.exe query Samss - 若Samss未启动,执行
sc.exe start Samss启动它。 - 若lanmanserver依赖关系异常,重新配置:
sc.exe config lanmanserver depend= Samss/Srvv2
4. 配置SMB相关端口与服务
- 若需从外部访问容器共享,启动容器时映射SMB协议的445端口:
docker run -it --privileged -p 445:445 mcr.microsoft.com/windows/servercore:ltsc2019 powershell - 在容器内启用SMB服务:
Set-SmbServerConfiguration -EnableSMB1Protocol $true -EnableSMB2Protocol $true
5. 验证共享访问
- 启动lanmanserver服务:
sc.exe start lanmanserver - 在容器内创建共享(以C盘为例):
net share C$=C:\ - 从主机或其他机器访问:
\\<容器IP>\C$,输入容器内带密码的管理员账号即可。
内容的提问来源于stack exchange,提问作者Subin Babu
相关产品推荐
相关产品推荐

