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

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

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

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

在圖3-1 中,您可以根據所使用的 .NET framework,查看可能的作業系統版本。

顯示哪些作業系統與 .NET 容器搭配使用的圖表。

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

當您部署舊版 .NET Framework 應用程式時,您必須以 Windows Server Core 為目標,與繼承應用程式和 IIS 相容,但它有較大的影像。 部署 .NET 5 應用程式時,您可以將目標設為雲端優化的 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:5.0 .NET 5 多重架構:支援 Linux 和 Windows Nano Server,視 Docker 主機而定。
mcr.microsoft.com/dotnet/aspnet:5.0 ASP.NET Core 5.0 多架構:支援 Linux 和 Windows Nano Server,視 Docker 主機而定。
aspnetcore 映像有幾項針對 ASP.NET Core 所做的最佳化。
mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim .NET 5 執行時間-僅適用于 Linux Debian 發行版本
mcr.microsoft.com/dotnet/aspnet:5.0-nanoserver-1809 僅限 .NET 5 執行時間-僅限 Windows Nano Server (Windows Server 1809 版)