【问题标题】:How can I build and run docker image using Visual Studio 2019?如何使用 Visual Studio 2019 构建和运行 docker 映像?
【发布时间】:2020-01-04 19:51:05
【问题描述】:

我有一个基于 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

我还对通过运行docker ps 找到的所有图像执行了ps kill。我还运行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).

【问题讨论】:

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


    【解决方案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 进行安装,但可能发生了一些事情。安装后,它会在您重新启动时运行,除非您告诉它不要这样做。

    埃里克

    【讨论】:

      猜你喜欢
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 2018-05-21
      • 2016-02-19
      相关资源
      最近更新 更多