針對 .NET 容器要設為目標的作業系統

提示

此內容是適用于容器化 .NET 應用程式的電子書.NET 微服務架構摘錄,可在 .NET Docs 上取得,或作為可離線讀取的免費可下載 PDF。

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

由於 Docker 支援的作業系統多樣性,以及 .NET Framework 與 .NET 6 之間的差異,您應該根據您使用的架構,將特定 OS 和特定版本設為目標。

針對 Windows,您可以使用 Windows Server Core 或 Windows Nano Server。 這些 Windows 版本在 Windows Server Core 中提供不同的特性 (IIS,與 Nano Server 中 Kestrel 之類的自我裝載網頁伺服器) 分別由 .NET Framework 或 .NET 6 所需。

針對 Linux,有多個發佈可供使用,且受到正式 .NET Docker 映像的支援 (例如 Debian)。

在圖 3-1 中,視使用的 .NET Framework 而定,您可以看到可能的 OS 版本。

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

圖 3-1。 根據 .NET Framework 版本決定要設為目標的作業系統

部署舊版 .NET Framework 應用程式時,您必須以 Windows Server Core 為目標,且與繼承應用程式和 IIS 相容,但其映射較大。 部署 .NET 6 應用程式時,您可以將目標設為 Windows Nano Server,這是雲端優化、使用 Kestrel 且較小且更快啟動。 您也可以以 Linux 為目標,支援 Debian、Alpine 和其他專案。 此外,也會使用 Kestrel、較小且啟動速度較快。

若您想要使用不同的 Linux 發佈或 Microsoft 未支援的版本,您也可以建立您自己的 Docker 映像。 例如,您可以建立讓 ASP.NET Core 在傳統式 .NET Framework 及 Windows Server Core 上執行的映像 (並非 Docker 的常見案例)。

當您將映像名稱新增至您的 Dockerfile 檔案時,您可以根據使用的標籤選取作業系統及版本,如下列範例中所示:

映像 註解
mcr.microsoft.com/dotnet/runtime:6.0 .NET 6 多重架構:支援 Linux 和 Windows Nano Server,視 Docker 主機而定。
mcr.microsoft.com/dotnet/aspnet:6.0 ASP.NET Core 6.0 多重架構:支援 Linux 和 Windows Nano Server,視 Docker 主機而定。
aspnetcore 映像有幾項針對 ASP.NET Core 所做的最佳化。
mcr.microsoft.com/dotnet/aspnet:6.0-bullseye-slim Linux Debian 散發版本上僅限 .NET 6 執行時間
mcr.microsoft.com/dotnet/aspnet:6.0-nanoserver-1809 僅限 Windows Nano Server 上的 .NET 6 執行時間 (Windows Server 1809 版)