自定义容器卷映射
为了使调试功能在容器中正常工作,Visual Studio 使用卷映射,将主机上的调试器和 NuGet 文件夹进行映射。 有关卷映射,可参阅此处的 Docker 文档。 可以使用 Visual Studio 中的“容器”窗口查看容器的卷映射。
先决条件
- Docker Desktop
- 安装了“Web 开发”、“Azure 工具”工作负载和/或“.NET 桌面开发”工作负载的 Visual Studio 2019 或更高版本
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
命令行参数装载另一个卷。
打开容器化项目的项目文件。
若要指定新的命令行参数,请添加 MSBuild 属性
DockerfileRunArguments
,并提供-v
或--mount
语法。 例如,以下语法创建卷myvolume
并将其装载到文件夹/scratch
中的容器中。<PropertyGroup> <DockerfileRunArguments>-v myvolume:/scratch</DockerfileRunArguments> </PropertyGroup>
有关 -v 或 --mount 选项的命令行语法,请参阅 Docker 文档。
相关内容
- 在 Visual Studio 中自定义 Docker 容器
- Windows 上的 Dockerfile
- Windows 上的 Linux 容器