0

我有一个基于 ASP.NET Core 3.1 框架编写的 Web API 应用程序,我想使用 docker 运行它。当我使用 docker 单击“运行”时,Visual Studio 失败并将以下内容记录到调试窗口中。

C:\Users\myusername.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.9.10\build\Container.targets(198,5):错误 CTC1003:Visual Studio 容器工具需要 Docker 才能运行

在查看该错误之前的日志时,我可以看到 VS 正在尝试使用以下命令运行 docker 映像

docker run -dt -v "C:\Users\myusername\vsdbg\vs2017u5:/remote_debugger:rw" -v "C:\WinProjects\ProjectName\ProjectName:/app" -v "C:\WinProjects\ProjectName:/src" -v "C:\Users\myusername\AppData\Roaming\Microsoft\UserSecrets:/root/.microsoft/usersecrets:ro" -v "C:\Users\myusername\AppData\Roaming\ASP.NET\Https:/root/.aspnet/https:ro" -v "C:\Users\myusername\.nuget\packages\:/root/.nuget/fallbackpackages2" -v "C:\Program Files\dotnet\sdk\NuGetFallbackFolder:/root/.nuget/fallbackpackages" -e "DOTNET_USE_POLLING_FILE_WATCHER=1" -e "ASPNETCORE_ENVIRONMENT=Development" -e "ASPNETCORE_URLS=https://+:443;http://+:80" -e "NUGET_PACKAGES=/root/.nuget/fallbackpackages2" -e "NUGET_FALLBACK_PACKAGES=/root/.nuget/fallbackpackages;/root/.nuget/fallbackpackages2" -P --name ProjectName --entrypoint tail projectname:dev -f /dev/null

但是该命令会引发以下错误

docker:来自守护进程的错误响应:无效的卷规范:'C:\Users\myusername\AppData\Roaming\ASP.NET\Https:/root/.aspnet/https:ro'。

如何解决此问题并从 Visual Studio 2019 运行 Docker 映像?

在 Visual Studio 中使用Package Manager Console,以下命令可以正常工作。

docker ps
docker-machine status

我不明白为什么 Visual Studio 会抛出error CTC1003: Visual Studio container tools require Docker to be running

我还执行ps kill了通过运行找到的所有图像docker ps。我也跑去docker system prune -a收拾东西。但仍然是同样的问题。

此外,我将docker-compose项目添加到我的解决方案中。当它运行时,我收到以下错误

-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
  It was not possible to find any installed .NET Core SDKs
  Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
      https://aka.ms/dotnet-download
The target process exited without raising a CoreCLR started event. Ensure that the target process is configured to use .NET Core. This may be expected if the target process did not run on .NET Core.
The program 'dotnet' has exited with code 145 (0x91).
4

1 回答 1

1

Docker 是一个轻量级的 VM 解决方案,用于部署某些类型的项目进行测试。看起来您需要让 Docker Desktop 在该机器上运行,然后才能部署/调试 Web API。

一旦你运行了一个 Docker 实例,你就可以运行/调试它。

所以我的问题是:1)这是在物理机还是虚拟机上运行?它有所不同,因为您需要运行 Hyper V 才能在 Windows 上使用 Docker,并且您不能(至少我无法)在 VM 中运行 Hyper V。2)您是否下载并运行了 Docker Desktop 安装?

这是链接:https ://hub.docker.com/?overlay=onboarding

注意:安装 Docker 时,请确保选择使用 Linux 容器,而不是 Windows……我无法让它与所选的 Windows 容器一起使用。

当您创建项目时,它应该已经下载了 docker 进行安装,但可能发生了一些事情。安装后,它会在您重新启动时运行,除非您告诉它不要这样做。

埃里克

于 2020-02-12T15:08:50.900 回答