自定义容器卷映射

为了使调试功能在容器中正常工作,Visual Studio 使用卷映射,将主机上的调试器和 NuGet 文件夹进行映射。 有关卷映射,可参阅此处的 Docker 文档。 可以使用 Visual Studio 中的“容器”窗口查看容器的卷映射。

先决条件

Visual Studio 容器映像中的卷装载

下面是在容器中装载的卷:

音量 描述
应用文件夹 包含 Dockerfile 所在的项目文件夹。
NuGet 包文件夹 包含从项目的 obj{project}.csproj.nuget.g.props 文件中读取的 NuGet 包和 fallback 文件夹。
远程调试器 包含根据项目类型在容器中调试程序所需的组件。 请参阅 自定义容器映像以调试
源文件夹 包含传递给 Docker 命令的生成上下文。

下面是在容器中装载的卷。 容器中看到的内容可能因使用的 Visual Studio 2022 的次要版本而异。

音量 描述
应用文件夹 包含 Dockerfile 所在的项目文件夹。
NuGet 包文件夹 包含从项目中的 obj{project}.csproj.nuget.g.props 文件中读取的 NuGet 包和备用文件夹。
远程调试器 包含根据项目类型在容器中运行调试器所需的组件。 有关详细信息,请参阅 自定义容器映像以调试
源文件夹 包含传递给 Docker 命令的生成上下文。
VSTools 包含可支持使用容器的 Visual Studio 工具,包括支持调试器、容器窗口、处理 Azure 令牌、热重载代理和无发行版帮助程序。

对于 .NET 8,也可能存在其他包含用户机密和 HTTPS 证书的装载点,它们可能位于根位置,也可能用于应用用户。

说明

Visual Studio 17.10 如果在没有 Docker Desktop 的适用于 Linux 的 Windows 子系统 (WSL) 中使用 Docker 引擎,请将环境变量 VSCT_WslDaemon=1 设置为在创建卷装载时让 Visual Studio 使用 WSL 路径。 还需要 NuGet 包 Microsoft.VisualStudio.Azure.Containers.Tools.Targets 1.20.0-Preview 1

对于 ASP.NET Core Web 应用程序,可能会有两个用于 SSL 证书和用户密钥的附加文件夹,相关详细信息请参阅 在容器化 ASP.NET Core 应用程序中使用 SSL

装载容器卷

可以使用 docker run 命令行参数装载另一个卷。

  1. 打开容器化项目的项目文件。

  2. 若要指定新的命令行参数,请添加 MSBuild 属性 DockerfileRunArguments,并提供 -v--mount 语法。 例如,以下语法创建卷 myvolume 并将其装载到文件夹 /scratch 中的容器中。

    <PropertyGroup>
       <DockerfileRunArguments>-v myvolume:/scratch</DockerfileRunArguments>
    </PropertyGroup>
    

    有关 -v 或 --mount 选项的命令行语法,请参阅 Docker 文档。