官方 .NET Docker 映像
官方 .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/*
來參考最新的預覽版本