容器入口点是一个进程,该进程配置为在启动容器时运行。
先决条件
- Docker Desktop 或 Podman Desktop。
- Visual Studio,或者对于 Podman 支持,Visual Studio 2026 安装了 ASP.NET 和 Web 开发、Azure 开发 工作负载和/或 .NET 桌面开发 工作负载。
先决条件
- Docker Desktop。
- 安装了 ASP.NET 和 Web 开发、Azure 开发工作负载和/或 .NET 桌面开发工作负载的 Visual Studio。
先决条件
- Docker Desktop
- 安装了 ASP.NET 和 Web 开发、Azure 开发工作负载、.NET 桌面开发和/或 .NET Core 跨平台开发工作负载的 Visual Studio 2019 或更高版本。
按项目类型排序的入口点
Visual Studio 根据项目类型和容器操作系统使用自定义容器入口点,下面是不同的组合:
| 容器类型 | 入口点 |
|---|---|
| Linux 容器 | 入口点为 tail -f /dev/null,表示无限等待,从而使容器保持运行。 通过调试器启动应用时,是调试器负责运行该应用(即 dotnet webapp.dll)。 如果在未调试的情况下启动,该工具将运行 docker exec -i {containerId} dotnet webapp.dll 来运行应用。 |
| Windows 容器 | 入口点类似于用于运行调试程序的 C:\remote_debugger\x64\msvsmon.exe /noauth /anyuser /silent /nostatus,因此它侦听连接。 当调试器运行应用时,此方法适用。 在未调试的情况下启动时,将使用 docker exec 命令。 对于 .NET Framework 网页应用,入口点略有不同,其中会在命令中添加 ServiceMonitor。 |
| 容器类型 | 入口点 |
|---|---|
| Linux 容器 | 对于 .NET 6 及更高版本,入口点是 dotnet --roll-forward Major /VSTools/DistrolessHelper/DistrolessHelper.dll --wait。 对于 .NET 5 及更早版本,入口点是 tail -f /dev/null。 当应用未运行时,这些进程使用无限等待来保持容器运行。 在应用启动时,无论是否进行调试,都由调试器负责运行应用(即dotnet webapp.dll)并保持容器运行。 |
| Windows 容器 | 入口点类似于用于运行调试程序的 C:\remote_debugger\x64\msvsmon.exe /noauth /anyuser /silent /nostatus,因此它侦听连接。 对于 .NET Framework 网页应用,入口点略有不同,其中会在命令中添加 ServiceMonitor。 |
| 容器类型 | 入口点 |
|---|---|
| Linux 容器 | 对于 .NET 6 及更高版本,入口点是 dotnet --roll-forward Major /VSTools/DistrolessHelper/DistrolessHelper.dll --wait。 对于 .NET 5 及更早版本,入口点是 tail -f /dev/null。 当应用未运行时,这些进程使用无限等待来保持容器运行。 启动应用程序时,无论是否处于调试模式,负责运行应用程序的调试器是 dotnet webapp.dll,也就是说。
DistrolessHelper 监视应用进程,并在应用进程结束时使用应用的退出代码退出。 |
| Windows 容器 | 入口点类似于用于运行调试程序的 C:\remote_debugger\x64\msvsmon.exe /noauth /anyuser /silent /nostatus,因此它侦听连接。 |
容器入口点只能在 Docker Compose 项目中修改,而不能在单容器项目中修改。 请参阅 Docker Compose 属性 - 自定义应用启动过程。