You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET Docker运行报OCI runtime create failed错误该如何解决

解决方法
  • 核对实际生成的exe文件名:报错提示找不到helloworld.exe,但你的Dockerfile中ENTRYPOINT指定的是helloworld-app.exe,先确认本地bin/Release目录下编译生成的exe真实名称,将Dockerfile中的ENTRYPOINT参数修改为和实际文件名完全一致即可,注意Linux容器对文件名大小写敏感,不要写错大小写。
  • 修正COPY指令的路径:.NET系列项目Release编译后的输出默认存放在bin/Release/<目标框架版本>子目录下,比如bin/Release/net6.0/,直接写COPY bin/Release .只会把Release目录的文件夹结构拷进容器,exe实际在子目录下不会出现在/app根路径,你可以把路径替换为实际的输出子目录,示例:COPY bin/Release/net6.0/ .(将net6.0替换为你项目的目标框架版本)。
  • 临时调整启动命令排查文件列表:可以暂时把Dockerfile的ENTRYPOINT修改为ENTRYPOINT ["ls", "-la"],重新构建镜像后运行,即可直接输出/app目录下的所有文件,直观确认目标exe是否存在、文件名是否正确。
  • 使用多阶段构建避免环境差异:本地开发环境和容器环境的架构、运行时版本差异可能会导致文件识别异常,推荐使用多阶段构建直接在容器内完成编译发布,示例Dockerfile如下:
# 构建阶段,使用SDK镜像完成编译
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
# 替换为你自己的项目文件名
COPY HelloWorld.vbproj .
RUN dotnet restore
COPY . .
RUN dotnet build -c Release -o /app/build

# 发布阶段
FROM build AS publish
RUN dotnet publish -c Release -o /app/publish

# 最终运行阶段,仅保留运行时和发布产物
FROM mcr.microsoft.com/dotnet/runtime:6.0 AS final
WORKDIR /app
COPY --from=publish /app/publish .
# 替换为你实际生成的exe文件名
ENTRYPOINT ["dotnet", "HelloWorld.exe"]
  • 确认项目类型和基础镜像匹配:如果你的VB.NET项目是基于.NET Framework开发的,不能使用.NET Core/.NET的Linux运行时镜像,需要切换为Windows容器,并使用对应版本的.NET Framework基础镜像。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:48:05