使用 .NET 容器时定位的操作系统

提示

此内容摘自电子书《适用于容器化 .NET 应用程序的 .NET 微服务体系结构》,可在 .NET 文档上获取,也可作为免费可下载的 PDF 脱机阅读。

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

鉴于 Docker 支持多种操作系统,以及 .NET Framework 和 .NET 8 之间的差异,应当根据所使用的框架来以特定操作系统和特定版本为目标。

对于 Windows,可使用 Windows Server Core 或 Windows Nano Server。 这些 Windows 版本分别提供 .NET Framework 和 .NET 8 各自可能需要的不同特征(Windows Server Core 中的 IIS 与 Nano Server 中的自承载 Web 服务器,如 Kestrel)。

对于 Linux,正式的 .NET Docker 映像(如 Debian)中提供并支持多个发行版本。

图 3-1 显示基于所使用的 .NET framework,可使用的操作系统版本。

Diagram showing what OS to use with which .NET containers.

图 3-1. 根据 .NET framework 确定要面向的操作系统

部署旧的 .NET Framework 应用程序时,必须以与旧应用程序和 IIS 兼容但具有更大映像的 Windows Server Core 为目标。 部署 .NET 8 应用程序时,可以将已经过云优化、使用 Kestrel、规模更小且启动速度更快的 Windows Nano Server 作为目标。 还可以面向 Linux,支持 Debian、Alpine 和其他操作系统。

如果想使用不同的 Linux 发行版本或要使用 Microsoft 不支持的映像版本,还可以创建自己的 Docker 映像。 例如,可以使用 ASP.NET Core 创建一个在传统 .NET Framework 和 Windows Server Core 上运行的映像,但这不是常见的 Docker 方案。

将映像名称添加到 Dockerfile 文件后,可根据所使用的标记选择操作系统和版本,如下例所示:

图像 注释
mcr.microsoft.com/dotnet/runtime:8.0 .NET 8 多体系结构:支持 Linux 和 Windows Nano Server,具体取决于 Docker 主机。
mcr.microsoft.com/dotnet/aspnet:8.0 ASP.NET Core 8.0 多体系结构:支持 Linux 和 Windows Nano Server,具体取决于 Docker 主机。
ASP.NET Core 的 aspnetcore 映像具有多个优化。
mcr.microsoft.com/dotnet/aspnet:8.0-bullseye-slim .NET 8 运行时-仅在 Linux Debian 发行版
mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 .NET 8 运行时-仅在 Windows Nano Server 上(Windows Server 版本 1809)