You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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,检查里面的ENTRYPOINTCMD指令,比如是否有类似这样的代码:

ENTRYPOINT ["dotnet", "Web.dll"]

如果实际生成的DLL不是这个名字,把这里改成对应的名称就可以了。另外,你也可以用以下命令查看镜像的默认启动命令,确认配置是否正确:

# Windows系统下用findstr过滤结果,Linux/macOS用grep
docker inspect web | findstr "Cmd"

内容的提问来源于stack exchange,提问作者Makla

火山引擎 最新活动