首页 > 解决方案 > Docker 运行给出“CreateProcess:Windows 系统调用失败:系统找不到指定的文件。(0x2)”

问题描述

我对码头工人很陌生。我正在尝试对 helloworld API 进行 dockerize 处理。但是当我尝试 docker run 图像时,我收到了这个错误:

C:\Program Files\Docker\Docker\Resources\bin\docker.exe:来自守护进程的错误响应:容器 f891d7fc7af6e1183256043e6105fc87e25c6959d9745cc972b42c7b2e6f5a06 在 CreateProcess 期间遇到错误:Windows 系统调用失败:系统找不到指定的文件。(0x2) [事件详细信息:提供程序:00000000-0000-0000-0000-000000000000] [事件详细信息:提供程序:00000000-0000-0000-0000-000000000000] [事件详细信息:vm\compute\management\orchestration\vmhostedcontainer\processmanagement .cpp(168)\vmcomputeagent.exe!00007FF683797B25: (caller: 00007FF68377A312) Exception(4) tid(108) 80070002 系统找不到指定的文件。CallContext:[\Bridge_ProcessMessage\ComputeSystemManager_ExecuteProcess\VmHostedContainer_ExecuteProcess] 提供者:00000000-0000-0000-0000-000000000000] 额外信息:{"CommandLine":"

我有一个简单的 asp.net api。我把它发布到同一个文件夹./publish 这是我的 docker 文件

FROM microsoft/aspnet:4.7.1-windowsservercore-1709
WORKDIR /app

COPY ./publish .
WORKDIR bin
RUN ls
ENTRYPOINT ["dotnet", "HelloWorldDocker.dll"]

ls显示HelloWorldDocker.dll在目录中./bin (app/bin)。IDK这里有什么问题......

标签: asp.netdockerdockerfiledocker-for-windowsdocker-desktop

解决方案


此行COPY ./publish .会将所有发布文件复制到您当前的工作目录中。包含您的 DLL 的 bin 文件夹现在位于此处:/app/bin/{your dll}.

没有必要像您那样将工作目录更改为 bin ;相反,您可以单独留下您的工作目录(留在 /app 中)并将您的入口点指定为:
ENTRYPOINT ["dotnet", "./bin/HelloWorldDocker.dll"]

-或者-

您可以像以前一样将 WORKDIR 设置为/app/bin并指定您的入口点:ENTRYPOINT ["dotnet", "HelloWorldDocker.dll"]

您需要记住的主要事情是文件与您的工作目录相关的位置,您可以通过更改工作目录以及复制文件来管理它,就像您将所有发布文件复制到 /app


推荐阅读