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

提示

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

容器化 .NET 應用程式電子書的 .NET 微服務架構涵蓋縮圖。

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

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

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

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

此圖顯示要與哪些 .NET 容器搭配使用的 OS。

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

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

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

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

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