繁体   English   中英

如何对 Visual Studio .net 核心 Windows 10 Docker 容器进行故障排除,错误为“本地主机响应时间过长”(ERR_CONNECTION_TIMED_OUT)

[英]How do I troubleshoot Visual Studio .net core Windows 10 Docker containers with error "localhost took too long to respond" (ERR_CONNECTION_TIMED_OUT)?

Docker / 容器的新手。 我在网上阅读和观看的所有内容都表明,通过将 DockerFile 添加到项目中,Windows 的 Docker 与 Visual Studio“正常工作”,然后就消失了。 我有一个默认/生成的 MVC.Net 6(核心)应用程序(我没有添加我自己的逻辑),它在“IIS Express”模式下运行得很好。 当我 select 使用“Docker”模式时,它似乎构建正常,但是当它尝试在浏览器中打开应用程序时超时。 首先它在 Visual Studio 中弹出一条消息,说“远程操作花费的时间比预期的要长”,然后在 Visual Studio 中弹出另一条消息,“与 XXX.XX.XXX.XXX:XXXX 的网络连接已丢失。调试将被中止”。 当我单击确定时,它会打开浏览器 window (Chrome) 到 url http://localhost:0/。 关闭防火墙没有帮助。

我已将 VS 中的“容器工具”output 放在本说明的末尾。

我将 DockerFile 代码本身保留为 VS 生成的代码:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["testingDocker.csproj", "."]
RUN dotnet restore "./testingDocker.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "testingDocker.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "testingDocker.csproj" -c Release -o /app/publish 
#/p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "testingDocker.dll"]

我从 Docker 中提取了其他几个示例图像(例如,“markheath/samplewebapp:windows”和“kgpkgp/samplewebapp:latest”),分别运行它们,映射所需的端口,例如,

docker run -d -p 8081:80 --name ContainerName ImageName:TagName ping -t localhost

...然后在浏览器中成功打开它们,例如,

http://localhost:8081/

我已经成功地为这些拉取的图像使用了各种主机端口,所以我想我可以排除网络和防火墙问题。

当我查看 Docker 桌面显示时,“testingdocker”图像在那里,“testingDocker”容器在那里,但以“EXITED (4294967295)”状态停止。 “使用浏览器打开”选项不会出现在省略号按钮下方。 当我尝试使用命令行(docker run -d -p 8083:80 ....)从现有图像创建新容器时,容器成功创建并运行,并且“使用浏览器打开”选项可用; 当我 select 时,浏览器打开到 http://localhost:8083/ 但无法加载,显示消息“localhost 响应时间太长”(ERR_CONNECTION_TIMED_OUT)。 我对一切都进行了第二次猜测(和第三次猜测等)。 关于这里可能有什么问题的任何建议?

来自VS的“容器工具”output:

========== Checking for Container Prerequisites ==========
Verifying that Docker Desktop is installed...
Docker Desktop is installed.
========== Verifying that Docker Desktop is running... ==========
Verifying that Docker Desktop is running...
Docker Desktop is running.
========== Verifying Docker OS ==========
Verifying that Docker Desktop's operating system mode matches the project's target operating system...
Docker Desktop's operating system mode matches the project's target operating system.
========== Pulling Required Images ==========
Checking for missing Docker images...
Pulling Docker images. To cancel this download, close the command prompt window.
docker pull mcr.microsoft.com/dotnet/aspnet:6.0
Docker images are ready.
========== Warming up container(s) for testingDocker ==========
Starting up container(s)...
docker build -f "C:\J\testingDocker\testingDocker\Dockerfile" --force-rm -t testingdocker:dev --target base  --label "com.microsoft.created-by=visual-studio" --label "com.microsoft.visual-studio.project-name=testingDocker" "C:\J\testingDocker\testingDocker" 
Sending build context to Docker daemon  8.199MB

Step 1/5 : FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
 ---> 1eaec0f2abb1
Step 2/5 : WORKDIR /app
 ---> Running in d3b72aeec68e
Removing intermediate container d3b72aeec68e
 ---> 3f573ca3d231
Step 3/5 : EXPOSE 8080
 ---> Running in a880a99ebd54
Removing intermediate container a880a99ebd54
 ---> 22255aa22f3f
Step 4/5 : LABEL com.microsoft.created-by=visual-studio
 ---> Running in 58b503e11d66
Removing intermediate container 58b503e11d66
 ---> 41c0305f94a5
Step 5/5 : LABEL com.microsoft.visual-studio.project-name=testingDocker
 ---> Running in 3dea4d690e3c
Removing intermediate container 3dea4d690e3c
 ---> d05c6888e64f
Successfully built d05c6888e64f
Successfully tagged testingdocker:dev

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
docker rm -f 2319c1e877821720d122cd45ee01c27cabf410acee68d41528e691a19e1bc8c5
2319c1e877821720d122cd45ee01c27cabf410acee68d41528e691a19e1bc8c5
docker run -dt -v "C:\Users\James\onecoremsvsmon\17.3.10630.1389:C:\remote_debugger:ro" -v "C:\J\testingDocker\testingDocker:C:\app" -v "C:\J\testingDocker\testingDocker:c:\src" -v "C:\Users\James\.nuget\packages\:c:\.nuget\fallbackpackages2" -v "C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages:c:\.nuget\fallbackpackages" -e "ASPNETCORE_LOGGING__CONSOLE__DISABLECOLORS=true" -e "ASPNETCORE_ENVIRONMENT=Development" -e "DOTNET_USE_POLLING_FILE_WATCHER=1" -e "NUGET_PACKAGES=c:\.nuget\fallbackpackages2" -e "NUGET_FALLBACK_PACKAGES=c:\.nuget\fallbackpackages;c:\.nuget\fallbackpackages2" -P --name testingDocker_1 --entrypoint C:\remote_debugger\x64\msvsmon.exe testingdocker:dev /noauth /anyuser /silent /nostatus /noclrwarn /nosecuritywarn /nofirewallwarn /nowowwarn /fallbackloadremotemanagedpdbs /timeout:2147483646 /LogDebuggeeOutputToStdOut 
51a6d9e31decdc7adf618d8cadbe09ef26e3aa19c13a7d63f13353761a333f89
Container started successfully.
========== Finished ==========

您可以尝试以下方法:

  1. 检查您是否使用过网络安全软件。 您可以禁用或关闭这些应用程序。

  2. 您可以使用 DebugDiag 工具监控devenv.exemsvsmon.exe并收集转储文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM