官方 .NET Docker 映像

提示

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

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

官方 .NET Docker 映像是 Microsoft 建立及最佳化的 .NET Docker 映像。 Microsoft 成品登錄公開提供。 您可以搜尋目錄以尋找所有 .NET 映射存放庫,例如 .NET SDK 存放庫。

每個存放庫可以包含多個映射,視 .NET 版本而定,以及視 LINUX Debian、Linux Alpine、Windows Nano Server、Windows Server Core 等 () 作業系統和版本而定。 映像存放庫會提供大量的標籤,可讓您能夠除了選擇特定架構版本之外,還能選擇作業系統 (Linux 發行版本或 Windows 版本)。

適用于開發與生產環境的 .NET 和 Docker 映射優化

在建置開發人員 Docker 映像時,Microsoft 會著重在下列主要案例︰

  • 用來 開發和 建置 .NET 應用程式的映射。

  • 用來 執行 .NET 應用程式的映射。

為何有多個映像? 在開發、建置及執行容器化應用程式時,您通常有不同的優先考量。 透過提供這些個別工作的不同映像,Microsoft 會協助最佳化開發、建置及部署應用程式的個別處理程序。

開發與建置期間

開發期間的重點是,您逐一查看變更的速度以及偵錯變更的能力。 映像大小的重要性並不如變更程式碼及快速查看變更的功能。 有些工具和「組建代理程式容器」,請在開發和建置程式期間,使用開發 .NET 映射 (mcr.microsoft.com/dotnet/sdk:7.0) 。 在 Docker 容器中進行建置時,重要的是在編譯應用程式時所需的元素, 這包括編譯器和任何其他 .NET 相依性。

這種組建映像為何如此重要? 您不會將此映像部署到實際執行環境, 而是會使用此映像來建置要放入生產映像的內容。 在使用 Docker 多階段組建時,此映像會用於您的持續整合 (CI) 環境或組建環境。

生產環境

生產環境中很重要的是,您可以根據生產 .NET 映射部署和啟動容器的速度。 因此,以 mcr.microsoft.com/dotnet/aspnet:7.0 為基礎且僅限執行階段的映像會很小,可跨越網路快速從 Docker 登錄移動到 Docker 主機。 準備好執行的內容可用最短的時間完成啟動容器到處理結果的流程。 在 Docker 模型中,不需要從 C# 程式碼編譯,因為當您在使用組建容器時執行 dotnet build 或 dotnet publish 時,就不需要編譯。

在這個已經過最佳化調整的映像中,您只要放入執行應用程式所需的二進位檔案和其他內容。 例如,所 dotnet publish 建立的內容只包含已編譯的 .NET 二進位檔、映射、.js和 .css 檔案。 經過一段時間後,您會看到包含從 IL 到原生編譯 (的映射,這些映射包含從 IL 到原生的預先抖動) 套件。

雖然有多個版本的 .NET 和 ASP.NET Core映射,但它們全都會共用一或多個圖層,包括基底層。 因此,儲存映像所需的磁碟空間量很小,僅為您自訂映像及其基底映像之間的差異。 結果是從登錄中快速提取映射。

當您在 Microsoft 成品登錄 探索 .NET 映射存放庫時,您會發現多個已分類或標示標記的映射版本。 這些標籤可協助您根據需要的版本決定使用的版本,如同下表中的這些:

映像 註解
mcr.microsoft.com/dotnet/aspnet:7.0 Linux 和 Windows 上的 ASP.NET Core,具有僅執行階段和 ASP.NET Core 最佳化 (多架構)
mcr.microsoft.com/dotnet/sdk:7.0 Linux 和 Windows (多架構) 上包含 SDK 的 .NET 7

您可以在 dotnet-docker 中找到所有可用的 Docker 映像,也可使用夜間組建 mcr.microsoft.com/dotnet/nightly/* 來參考最新的預覽版本