針對 .NET 容器要設為目標的作業系統
提示
本內容節錄自《容器化 .NET 應用程式的 .NET 微服務架構》(.NET Microservices Architecture for Containerized .NET Applications) 電子書,可以在 .NET Docs 上取得,或免費下載可供離線閱讀的 PDF。
考量到 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 版本。
圖 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 僅限執行階段 |