如何使用Visual Studio 2019构建和运行docker映像?

时间:2020-01-04 19:51:05

标签: visual-studio docker visual-studio-2019 docker-machine docker-run

我有一个我想使用docker运行在ASP.NET Core 3.1框架顶部的Web API应用程序。当我使用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).

1 个答案:

答案 0 :(得分:1)

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

一旦您运行了Docker实例,就可以对其进行运行/调试。

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

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

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

创建项目时,它应该已经下载了docker进行安装,但是可能发生了某些情况。一旦安装,它将在您重新启动时运行,除非您告知不要这样做。

Erik