什麼是容器?

應用程式的標準化可攜式封裝

容器說明

就像運輸業使用實體貨櫃隔離不同的貨物,例如以便透過船隻和火車運輸,軟體開發技術也漸漸使用這種容器化的方法。

標準軟體套件 (稱為容器) 可將應用程式的程式碼與相關設定檔、程式庫及執行應用程式所需的相依性組合在一起。這可讓開發人員和 IT 專業人員順暢地跨環境部署應用程式。

開始使用 Docker

Why you should care about containers

應用程式換個環境就無法正確執行的問題,與軟體開發本身的起源一樣早。這類問題通常是因為程式庫需求的基礎設定和其他相依性不同而引發。

容器可提供輕量型固定基礎結構來封裝和部署應用程式,從而解決此問題。不論應用程式或服務,其相依性和設定都會封裝在一起,作為容器映像。您可以將容器化應用程式作為一個單位來測試,並以容器映像執行個體的形式部署到主機作業系統。

如此一來,容器即可讓開發人員和 IT 專業人員在幾乎或完全不需要修改的情況下,跨環境部署應用程式。

深入了解容器的起源和優勢。

觀看短片

容器與虛擬機器的比較

談到虛擬化,大家通常會想到虛擬機器 (VM)。事實上,虛擬化可以用許多形式來表現,容器也是其中一種。那麼,VM 與容器之間有何差異?

概括而言,VM 可將基礎硬體虛擬化,以讓多個作業系統 (OS) 執行個體可在硬體上執行。每部 VM 都可執行 OS,並可存取代表基礎硬體的虛擬化資源。

VM 有許多優點,包括在相同伺服器上執行不同作業系統的能力、提高實體資源的使用效率與成本效益,以及加快伺服器佈建速度。另一方面,每部 VM 都包含 OS 映像、程式庫、應用程式等等,因此可能會變得相當龐大。

容器可將基礎 OS 虛擬化,從而讓容器化應用程式察覺到其本身有 OS,包括 CPU、記憶體、檔案儲存空間和網路連線。由於基礎 OS 和基礎結構的差異已抽象化,因此只要基底映像一致,您就可以在任何地方部署容器並執行。對於開發人員來說,這是非常有吸引力的優點。

由於容器會共用主機 OS,因此不需要將 OS 開機或載入程式庫。這可確保容器更有效率且更輕量。相較於 VM 案例,容器化應用程式可以在幾秒鐘內啟動,因此機器可以容納應用程式的更多執行個體。共用 OS 的方法還多了一項優點,就是在維護時 (例如修補和更新) 可減少額外負荷。

雖然容器是可攜式的,但仍受限於為其定義的作業系統。例如,適用於 Linux 的容器無法在 Windows 上執行,反之亦然。

為什麼要使用容器

靈活

當開發人員建置應用程式,將其封裝到容器中,並提供給 IT 以在標準化平台上執行時,可減少部署應用程式的整體工作量,並簡化整個開發和測試週期。這也會增加開發與運作小組之間的共同作業和效率,以加快應用程式的傳遞速度。

可攜性

容器可提供標準化格式,來封裝並保留執行所需應用程式的所有必要元件。這解決了「應用程式只能在我機器上運作」的常見問題,而允許 OS 平台之間和雲端之間的可攜性。不論容器何時在何處部署,都會在一致的環境中執行,即使更換部署也不會變更。現在從開發環境到實際執行環境,您都保有的一致格式。

可快速擴縮性

由於容器沒有 VM 的常見額外負荷情況 (包括個別的 OS 執行個體),因此在相同的基礎結構上可支援更多容器。容器的輕量本質表示其可以快速啟動和停止,並滿足快速擴大和縮小的案例。

使用案例

雲端原生應用程式

雲端原生應用程式仰賴容器,作為跨公用、私人和混合式環境的通用作業模型。容器的低額外負荷和高密度特性,可讓您將許多容器裝載在相同的虛擬機器中,非常適合傳遞雲端原生應用程式。

隨即轉移

組織可透過移轉至雲端獲得極大的優點,但可能並不想重寫現有的應用程式。使用容器即可將應用程式移轉至雲端,而不需要變更任何程式碼。

Batch

批次處理意指不需要人為介入就可以完成的活動,或是能在資源可用情況下完成的活動,例如產生報表、調整影像大小,以及將檔案從某種格式轉換成另一種格式,都是批次處理的範例。容器可讓您輕鬆執行批次工作,而不需管理環境和相依性。您可以使用 Azure 容器執行個體 (ACI) 這類動態運算選項,有效率地擷取來源資料、加以處理,並將其放置在耐久性存放區中,例如 Azure Blob 儲存體。使用上述方法取代靜態佈建的虛擬機器,即可透過以秒計費來省下巨額成本。

機器學習

機器學習可對資料套用演算法,並根據在資料中找到的模式進行預測。容器可以讓機器學習應用程式在任何環境中保持獨立,並可供您輕鬆調整。

充分發揮容器的優點

若要充分發揮容器的優點,請考慮採用完整的解決方案,包括有助於達到靈活度、安全性和規模的容器最佳化工具和服務。

協調流程

大規模執行容器時,您必須透過協調流程平台 (例如 Kubernetes) 協調和管理分散式容器化應用程式。

探索如何在 Azure 上使用 Kubernetes

安全性

使用容器需要採用從容器映像到叢集隔離的多層式方法。這些保護設定最適合在 CI/CD 管線中進行。

查看容器和 Kubernetes 的安全性基本功能

無伺服器容器

您可以視需求使用容器進一步增加靈活度。使用無伺服器容器技術可輕鬆地執行容器,而不需要在流量突然增加時,管理 Kubernetes 叢集中的伺服器和高載。

試用無伺服器容器

DevOps

容器可讓開發人員輕鬆地在 IT 與實際執行環境之間共用軟體和相依性。 若與 DevOps 實務結合,即可有效地傳遞程式碼,並縮短軟體發展週期。

參閱使用 Azure 進行 DevOps 的指南

資源

當您準備就緒時,即可在 Azure 上免費試用容器和 Kubernetes