使用.NET CLI輕松容器化C#應用程式
容器是一個強大的工具,但對於許多開發者來說,將C#應用程式放進容器中的想法可能讓人感到不知所措。 手動設置Dockerfile和處理依賴可能會很複雜。 然而,正如Tim Corey在他的视频中解釋的那樣,.NET CLI簡化了這個過程,使開發者無需Dockerfile就能將他們的應用程式容器化。
在本文中,我們將深入探討使用Tim在他的影片中逐步講解的方法,將C#應用程式容器化。使用.NET CLI輕鬆容器化您的C#應用程式。遵循Tim的指導,我們將了解到如何輕鬆地將.NET應用程式發布到Docker容器中。
容器的.NET CLI介紹
在影片的一開始,Tim解釋了容器化的必要性。 他強調,雖然容器是一個很好的工具,但設置Dockerfile並正確配置它的過程可能很複雜。
Tim引入了一種使用.NET CLI的簡單方法,而不是手動建立Dockerfile。 這種方法允許開發者在不手動編寫Dockerfile的情況下建立容器化的應用程式。
Tim還澄清,這個影片是他10分鐘訓練系列的一部分,該系列專注於對技術主題進行快速而有效的介紹。
應用程式設置
Tim首先以一個簡單的Web API應用程式作為例子。 該應用程式包含一個名為/messages的單個端點,返回某些資料。
為了展示應用程式在容器化之前的行為,Tim在本地運行它。 通過存取/messages端點,他確認它在不使用容器的情況下能正常工作。
在進行容器化之前,他還檢查了:
- Docker已安裝並在他的機器上運行。
- 開始時沒有現有的Docker映像或容器。
這確保了在建立新容器時,我們可以清楚地看到變更。
準備容器化
為了容器化應用程式,Tim在專案目錄內移至命令行。 然後他運行以下命令:
dotnet publish -o:Linux -a:x64 -p:PublishProfile=DefaultContainer -c:Release
Tim分解了命令的每個部分:
-o:Linux→ 為基於Linux的容器發布應用程式。-a:x64→ 指定架構為64位。-p:PublishProfile=DefaultContainer→ 使用預設容器設置。-c:Release→ 為了更好的性能以釋放模式發布應用程式。
Tim強調Linux容器比Windows容器更受偏愛,因為Windows容器主要用作.NET Framework應用程式的橋樑。
發布和建立容器
一旦執行發布命令,Tim解釋了.NET CLI將自動確定必要的配置並將所有內容打包到容器中。 他指出:
- 這種方法不需要Dockerfile。
- 該過程一個步驟就能構建應用程式並將其容器化。
- 使用的基礎映像是微軟的.NET 8運行時容器。
發佈後,他檢查Docker Desktop並確認已建立新容器映像background-demo。 初始容器大小為221 MB。
Tim向觀眾保證,稍後可以減少這個大小。
運行容器
為了測試容器化應用程式,Tim直接從Docker Desktop啟動了容器。由於尚無運行中的容器,他點擊"Run"並設置了一個可選設置:
- 他將容器的內部端口(隨機分配)映射到主機上的8080端口。
啟動後,他使用Web瀏覽器存取應用程式。 最初,存取根URL會顯示404錯誤,但導航到/messages可成功顯示預期資料。
Tim強調了一個重點:
- 應用程式在容器中以UTC時間運行,這可能與本地主機的時區不同。
他還注意到,由於應用程式發佈在釋放模式中,Swagger UI預設為禁用。
優化容器大小
此時,預設容器大小為221 MB,Tim承認這相當大。 為了減少大小,他引入了一個較輕的基礎映像。
通過修改jammy-chiseled,這是一個更小的基於Ubuntu的映像:
builder.Services.Configure<ContainerOptions>(options => options.ContainerFamily = "jammy-chiseled");builder.Services.Configure<ContainerOptions>(options => options.ContainerFamily = "jammy-chiseled");然後,他重新運行發布命令,並在重建容器後,再次檢查映像大小。
新映像大小為113 MB——減少了約100 MB! 儘管大小較小,應用程式的功能相同。
刪除和重新建立容器
Tim演示了刪除容器以清理工作區。 但是,Docker映像仍然可用,因此如果需要可以重新建立容器。
他強調,一旦構建了容器,它可以:
- 本地運行以進行開發和測試。
- 推送到諸如Docker Hub或Azure Container Registry之類的容器註冊表中。
- 用作雲部署Web應用程式的基礎。
結論和最後的想法
Tim總結了影片,強調了使用.NET CLI進行容器化的主要好處:
- 無需Dockerfile - .NET CLI自動處理所有事情。
- 快速簡便的過程 - 只需一個命令即可容器化應用程式。
- 更小且優化的映像 - 使用
jammy-chiseled可減少容器大小。 - 無縫部署 - 容器可以推送到多種雲服務。
最後的想法
Tim使用.NET CLI進行C#應用程式容器化的方法簡單,快速且有效。透過遵循他的方法,開發者可以無需廣泛的Docker知識便能建立和優化容器。
通過利用Linux容器、優化的基礎映像和優化的發布命令,該技術使開發者能以最小的努力高效地將他們的應用程式容器化。
如果您想更深入地瞭解,請務必查看Tim Corey的影片。 它提供了整個過程的清晰、逐步的演練。

