共用方式為


使用 .NET 容器應該選擇哪些操作系統

小提示

此內容是適用於容器化 .NET 應用程式的電子書.NET 微服務架構摘錄,可在 .NET Docs 或免費下載的 PDF 中取得,可脫機讀取。

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

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

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

針對 Linux,官方 .NET Docker 映像中提供並支援多個發行版(例如 Debian)。

在圖 3-1 中,您可以根據所使用的 .NET Framework 來查看可能的 OS 版本。

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

圖 3-1。 視 .NET Framework 版本選擇的目標作業系統

部署舊版 .NET Framework 應用程式時,您必須將目標設定為與舊版應用程式和 IIS 相容的 Windows Server Core,然而此環境的映像大小較大。 部署 .NET 8 應用程式時,您可以將目標設為已優化雲端的 Windows Nano Server,使用 Kestrel 且較小且更快速啟動。 您也可以以Linux為目標,支援Debian、Alpine和其他。

您也可以在想要使用不同的 Linux 發行版本,或者想要建立 Microsoft 未提供版本的映像檔時,建立自己的 Docker 映像檔。 例如,您可能會在傳統 .NET Framework 和 Windows Server Core 上建立運行 ASP.NET 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 多重架構:根據 Docker 主機支援 Linux 和 Windows Nano Server。
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 上的 .NET 8 執行階段 (Windows Server 版本 1809)