运行 在 Windows 7 中 Docker 上的 ASP.NET Core WebApp 出错(调试)

Error while running the ASP.NET Core WebApp on Docker in Windows 7 (Debugging)

我正在尝试 运行 docker 上的 asp.net 核心应用 windows 7。我有 Visual Studio 2015 Enterprise(更新 3)和Visual Studio 已安装 Docker 的工具。此外,我能够 运行 发布配置中的应用程序。

我没有对 Docker 文件和组合文件进行任何更改,这些是我在创建项目并添加 Docker 支持时创建的默认文件。

当我运行使用调试配置安装应用程序时,我收到以下错误并且它没有运行安装任何docker容器到运行并且调试应用程序:

Error   MSB4018 The "PrepareForLaunch" task failed unexpectedly.
System.InvalidOperationException: Unable to validate volume mapping. For troubleshooting, follow instructions from http://aka.ms/DockerToolsTroubleshooting
   at Microsoft.DotNet.Docker.BuildTasks.PrepareForLaunch.<ExecuteAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.DotNet.Docker.BuildTasks.DockerBaseTask.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() SampleCoreApp   C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Publishing\ImportAfter\Microsoft.DotNet.Docker.targets  70  

解决此问题的任何帮助或线索都会有所帮助。

这个问题是因为这里的驱动器映射有问题。因此,我删除了其中一个驱动器映射 (- .:/app),还更改了 docker-compose.dev.debug.yml 文件中的源参数(obj/Docker/empty 为 .),它适用于我.

上一个文件(docker-compose.dev.debug.yml):

version: '2'

services:
samplecoreapp:
    build:
    args:
        source: obj/Docker/empty
    labels:
    - "com.microsoft.visualstudio.targetoperatingsystem=linux"
    environment:
    - ASPNETCORE_ENVIRONMENT=Development
    - DOTNET_USE_POLLING_FILE_WATCHER=1
    volumes:
    - .:/app
    - ~/.nuget/packages:/root/.nuget/packages:ro
    - ~/clrdbg:/clrdbg:ro
    entrypoint: tail -f /dev/null

修改后:

version: '2'

services:
samplecoreapp:
    build:
    args:
        source: .
    labels:
    - "com.microsoft.visualstudio.targetoperatingsystem=linux"
    environment:
    - ASPNETCORE_ENVIRONMENT=Development
    - DOTNET_USE_POLLING_FILE_WATCHER=1
    volumes:
    - ~/.nuget/packages:/root/.nuget/packages:ro
    - ~/clrdbg:/clrdbg:ro
    entrypoint: tail -f /dev/null

希望这对遇到此问题的人有所帮助。

这可能是由于 Docker 中的驱动器 Share/volume 安装问题,我遇到了这个确切的问题并从 Docker 设置中修复。这恰好出现在连接到企业域的机器中,其中 docker 默认具有有限权限。适当的解决方法是从 Docker 设置更新您的 "Shared Drives"。

Update shared drives

可以在此处找到更多详细信息https://blogs.msdn.microsoft.com/stevelasker/2016/06/14/configuring-docker-for-windows-volumes/