Visual Studio 容器工具

用于使用 DockerPodman 容器进行开发的 Visual Studio 中包含的工具极大地简化了容器化应用程序的生成、调试和部署。 可以使用单个项目的容器,也可以将容器业务流程与 Docker Compose 配合使用。

用于使用 Docker 容器进行开发的 Visual Studio 中包含的工具极大地简化了容器化应用程序的生成、调试和部署。 可以使用单个项目的容器,或者将容器业务流程与 Docker ComposeService Fabric 配合使用,以便处理容器中的多个服务。

先决条件

Visual Studio 中的 Docker 支持

Docker 支持适用于 ASP.NET 项目、ASP.NET 核心项目和 .NET Core 和 .NET Framework 控制台项目。

Visual Studio 中对 Docker 的支持因许多版本而发生更改,以响应客户需求。 可以向项目添加两个级别的 Docker 支持,支持的选项因项目类型和 Visual Studio 版本而异。 对于某些受支持的项目类型,如果只需要单个项目的容器,而无需使用业务流程,可以通过添加 Docker 支持来执行此操作。 下一个级别是容器业务流程支持,这将为所选的特定业务流程协调程序添加适当的支持文件。

使用 Visual Studio 2019,可以使用 Docker Compose、Kubernetes 和 Service Fabric 作为容器业务流程服务。

在 Visual Studio 2019 版本 16.4 及更高版本中,容器 窗口可用,可用于查看正在运行的容器、浏览可用映像、查看环境变量、日志和端口映射、检查文件系统、附加调试器或在容器环境中打开终端窗口。 请参阅使用“容器”窗口

先决条件

Visual Studio 中的容器支持

容器支持适用于 ASP.NET 核心项目,以及 .NET Core(以及 .NET 5 及更高版本)控制台项目。 当前版本的 Visual Studio 不支持 .NET Framework 项目。

如果您只需一个用于单个项目的容器,而不需要使用编排,可以通过添加容器支持来实现。 可以选择 Docker 或 Podman 作为容器平台,并在它们之间轻松切换,而无需更改项目。 下一个级别是 Container Compose 支持,它为 Docker Compose 添加了适当的支持文件。 (不支持 Podman Compose。

向 .NET 7 或更高版本项目添加容器支持时,有两种容器生成类型可供选择,用于添加容器支持。 可以选择添加 Dockerfile 以指定如何生成容器映像,也可以选择使用 .NET SDK 提供的内置容器支持。

使用 “容器 ”窗口可以查看正在运行的容器、浏览可用映像、查看环境变量、日志和端口映射、检查文件系统、附加调试器或打开容器环境中的终端窗口。 请参阅使用“容器”窗口

先决条件

Visual Studio 中的 Docker 支持

Docker 支持适用于 ASP.NET 项目、ASP.NET 核心项目和 .NET Core 和 .NET Framework 控制台项目。

Visual Studio 中对 Docker 的支持因许多版本而发生更改,以响应客户需求。 有几个选项可用于向项目添加 Docker 支持,支持的选项因项目类型和 Visual Studio 版本而异。 对于某些受支持的项目类型,如果只需要单个项目的容器,而无需使用业务流程,可以通过添加 Docker 支持来执行此操作。 下一个级别是容器业务流程支持,这将为所选的特定业务流程协调程序添加适当的支持文件。

使用 Visual Studio 2022 版本 17.9 及更高版本,将 Docker 支持添加到 .NET 7 或更高版本项目时,有两种容器生成类型可供选择,以便添加 Docker 支持。 可以选择添加 Dockerfile 以指定如何生成容器映像,也可以选择使用 .NET SDK 提供的内置容器支持。

此外,使用 Visual Studio 2022 及更高版本,选择容器业务流程时,可以使用 Docker Compose 或 Service Fabric 作为容器业务流程服务。

在 Visual Studio 2022 中,容器 窗口可用,可用于查看正在运行的容器、浏览可用映像、查看环境变量、日志和端口映射、检查文件系统、附加调试器或打开容器环境中的终端窗口。 请参阅使用“容器”窗口

若要创建具有容器支持的项目,或向现有项目添加容器支持,请参阅 “添加对容器的支持”。

若要使用 Docker 支持创建项目,或向现有项目添加 Docker 支持,请参阅 添加对容器的支持

备注

Docker 的许可要求对于不同版本的 Docker Desktop 可能有所不同。 请参阅 Docker 文档,了解使用 Docker Desktop 版本进行开发的当前许可要求。

Visual Studio 中的 Podman 支持

Visual Studio 支持 Podman 容器,这是一种提供无守护容器引擎的常用容器管理工具。 可以直接从 Visual Studio 使用 Podman CLI 运行和管理容器。 可以使用 Podman 以与 Docker 相同的方式运行单容器应用。

若要使用 Podman 容器,请从 CLI 启动 podman,并在 Visual Studio 中打开解决方案。 默认情况下,容器工具会自动检测 Podman 还是 Docker 正在运行,并在启动应用时使用当前活动的容器运行时。 若要手动配置容器运行时,请转到 工具 > 选项 > 容器工具 > 容器运行时 并选择 PodmanDocker。 默认设置为 “自动”,这意味着 Visual Studio 会尝试检测当前活动的容器运行时。 关闭“工具选项”>窗口以提交设置更改。

容器窗口

容器 窗口允许你在计算机上查看容器和镜像,并了解其活动情况。 可以查看文件系统、装载的卷、环境变量、使用的端口以及检查日志文件。

使用快速启动(Ctrl+)打开 容器 窗口,然后键入 containers。 可以使用停靠控件将窗口置于某个位置。 由于窗口的宽度,它在停靠在屏幕底部时表现最佳。

选择一个容器,并使用选项卡查看可用的信息。 要查看,请运行启用了 Docker 的应用,打开“文件”选项卡,然后展开 应用 文件夹以查看容器上已部署的应用程序。

“容器”窗口的屏幕截图。

“容器”窗口的屏幕截图。

有关详细信息,请参阅使用“容器”窗口

Docker Compose 支持

若要使用 Docker Compose 撰写多容器解决方案,请将容器业务流程协调程序支持添加到项目中。 这样,如果在同一个 docker-compose.yml 文件中定义了它们,就可以同时运行和调试一组容器(整个解决方案或项目组)。

若要使用 Docker Compose 添加容器业务流程协调程序支持,请右键单击 解决方案资源管理器中的项目节点,然后选择 添加 > 容器业务流程协调程序支持。 然后选择 Docker Compose 来管理容器。

向项目添加容器编排器支持后,可以在项目中看到一个 Dockerfile(如果尚未存在),以及在 解决方案资源管理器的解决方案中添加的一个 docker-compose 文件夹,如下图所示:

Visual Studio 解决方案资源管理器中 Docker 文件的屏幕截图。

Visual Studio 解决方案资源管理器中 Docker 文件的屏幕截图。

如果 docker-compose.yml 已存在,Visual Studio 只需将所需的配置代码行添加到其中。

使用 Docker Compose 对要控制的其他项目重复此过程。

如果使用大量服务,可以通过选择要在调试会话中启动的服务子集来节省时间和计算资源。 请参阅启动 Compose 服务的子集

备注

Visual Studio 工具不支持远程 Docker 主机。

Service Fabric 支持

使用 Visual Studio 中的 Service Fabric 工具,可以开发和调试 Azure Service Fabric、在本地运行和调试,以及部署到 Azure。

Visual Studio 2019 及更高版本支持使用 Windows 容器和 Service Fabric 业务流程开发容器化微服务。

有关详细教程,请参阅 教程:将 Windows 容器中的 .NET 应用程序部署到 Azure Service Fabric

有关 Azure Service Fabric 的详细信息,请参阅 Service Fabric

持续交付和持续集成 (CI/CD)

Visual Studio 可与 Azure Pipelines 轻松集成,以便自动持续集成,并将更改交付到服务代码和配置。 若要开始使用,请参阅创建第一个管道

有关 Service Fabric,请参阅 教程:使用 Azure DevOps Projects将 ASP.NET Core 应用部署到 Azure Service Fabric。

后续步骤

有关用于处理容器的服务实现和使用 Visual Studio 工具的更多详细信息,请阅读以下文章:

添加对容器的支持

Visual Studio 中的容器工具

在本地容器中调试应用

使用 Visual Studio 将 ASP.NET 容器部署到容器注册表

部署到 Azure 应用服务

使用 Visual Studio 部署到 Azure 容器应用