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

提示

本內容節錄自《容器化 .NET 應用程式的 .NET 微服務架構》(.NET Microservices Architecture for Containerized .NET Applications) 電子書,可以在 .NET Docs 上取得,或免費下載可供離線閱讀的 PDF。

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

考量到 Docker 支援的作業系統多樣性及 .NET Framework 和 .NET 8 之間的不同,建議您根據您使用的架構來瞄準特定 OS 和特定的版本。

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

針對 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 應用程式時,您必須以相容於舊版應用程式和 IIS,但具有較大映像的 Windows Server Core 為目標。 在部署 .NET 8 應用程式時,您能夠以 Windows Nano Server 為目標,因為它已經過雲端最佳化、使用 Kestrel,且較為輕巧而啟動速度較快。 此外,支援 Debian、Alpine 和其他項目的 Linux 也可作為目標。

若您想要使用不同的 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 主機而定。
aspnetcore 映像有幾項針對 ASP.NET Core 所做的最佳化。
mcr.microsoft.com/dotnet/aspnet:8.0-bullseye-slim Linux Debian 發佈上的 .NET 8 僅限執行階段
mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 Windows Nano Server (Windows Server 1809 版) 上的 .NET 8 僅限執行階段