Docker Windows容器报错:待执行应用不存在,如何查看容器内文件?
嘿,我来帮你搞定这两个问题——查看容器内文件,还有这个ASP.NET Core的启动报错:
解决容器内文件查看问题及ASP.NET Core启动报错分析
首先,针对你想检查容器内C:\app路径文件的需求,有几个实用方法,哪怕容器无法正常启动也能操作:
方法一:临时启动容器进入命令行
直接修改docker run的运行命令,让容器启动Windows命令提示符(cmd)而非你的应用,这样就能进入容器内部查看文件:
# 进入容器的cmd命令行 docker run -ti web cmd
进入后,输入dir C:\app就能查看目标路径下的所有文件,确认Web.dll是否存在。
方法二:创建容器后执行命令
如果直接运行容器会报错退出,也可以先创建容器但不启动,再通过docker exec进入容器:
# 创建一个名为temp-web的临时容器(仅创建不启动) docker create --name temp-web web # 进入这个容器的cmd界面 docker exec -ti temp-web cmd
检查完成后,用docker rm temp-web就能删掉这个临时容器,清理环境。
关于启动报错的额外排查思路
你遇到的The application to execute does not exist: 'C:\app\Web.dll'错误,大概率是Dockerfile里的启动命令指定的DLL名称和实际编译生成的不一致。ASP.NET Core项目编译后的DLL名称默认和你的项目名称一致,比如如果你的项目叫MyAspNetDemo,生成的就是MyAspNetDemo.dll,而不是Web.dll。
你可以打开你的Dockerfile,检查里面的ENTRYPOINT或CMD指令,比如是否有类似这样的代码:
ENTRYPOINT ["dotnet", "Web.dll"]
如果实际生成的DLL不是这个名字,把这里改成对应的名称就可以了。另外,你也可以用以下命令查看镜像的默认启动命令,确认配置是否正确:
# Windows系统下用findstr过滤结果,Linux/macOS用grep docker inspect web | findstr "Cmd"
内容的提问来源于stack exchange,提问作者Makla




