创建ASP.NET MVC应用Windows容器镜像时遇hcsshim启动错误求助
解决ASP.NET MVC应用打包Windows容器镜像时的0xc0370106错误
问题描述
将ASP.NET MVC应用打包为Windows容器镜像后,启动容器时触发以下错误:
container <hash> encountered an error during hcsshim::System::Start: failure in a Windows system call: The virtual machine or container exited unexpectedly. (0xc0370106)
环境信息
- Docker版本:20.10.17,build 100c701
- Docker Desktop版本:4.11.1
- 已尝试切换WSL2后端与Hyper-V后端,问题未得到解决
可能的修复方案
匹配基础镜像与主机系统版本
Windows容器对基础镜像的OS版本有严格要求,必须与宿主机Windows主版本号一致。运行winver查看主机系统版本,确保Dockerfile中FROM指令使用的镜像版本匹配,例如主机是Windows 10 21H2,需对应使用mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-21H2这类镜像。验证Dockerfile启动配置
检查Dockerfile是否包含正确的IIS启动指令,标准ASP.NET容器需用ServiceMonitor.exe托管IIS服务,确保存在类似以下的配置:
ENTRYPOINT ["C:\\ServiceMonitor.exe", "w3svc"]
如果自定义了启动脚本,排查脚本是否存在语法错误或导致进程异常退出的逻辑。
- 清理Docker冗余资源
执行以下命令清理缓存与残留容器、镜像:
docker system prune -af docker rm $(docker ps -aq)
完成后重启Docker Desktop,避免虚拟资源残留导致的冲突。
- 检查Windows容器功能状态
打开「控制面板→程序→启用或关闭Windows功能」,确认「容器」选项已勾选;若使用Hyper-V后端,同时确认「Hyper-V」功能已启用。也可通过PowerShell验证:
Get-WindowsFeature Containers
确保输出显示Installed状态。
- 排查应用依赖缺失
进入容器手动启动应用,查看详细错误日志:
docker run -it --entrypoint cmd <你的镜像名称> # 进入容器后执行以下命令启动服务 net start w3svc
检查是否存在依赖组件缺失、配置文件错误等导致应用无法启动的问题。
内容的提问来源于stack exchange,提问作者user19780871
相关产品推荐
相关产品推荐

