容器化是一種軟體開發方法,在此方法中,應用程式或服務、其相依性及其組態 (抽象化為部署資訊清單檔) 會封裝在一起,成為一個容器映像。 容器化應用程式可以作為一個單元進行測試,並作為容器映像實例部署至主機作業系統(OS)。
就像運送容器允許貨物由船舶、火車或卡車運輸,而不論貨物在裡面,軟體容器都會作為軟體部署的標準單位,其中包含不同的程式碼和相依性。 如此一來,容器化軟體可讓開發人員和IT專業人員在幾乎沒有修改或完全不修改的環境中進行部署。
容器也會在共用OS上彼此隔離應用程式。 容器化應用程式會在容器主機上執行,而該主機接著會在OS(Linux或 Windows) 上執行。 因此,容器的使用量明顯小於虛擬機 (VM) 映像。
每個容器都可以執行整個 Web 應用程式或服務,如圖 2-1 所示。 在此範例中,Docker 主機是容器主機,而 App1、App2、Svc 1 和 Svc 2 則是容器化應用程式或服務。
圖 2-1。 在容器主機上執行的多個容器
進行容器化的另一個優點是可擴縮性。 您可以透過建立新容器來快速擴展以應付短期工作。 從應用程式的觀點來看,具現化映像(建立容器)類似於具現化服務或 Web 應用程式等程式。 不過,為了可靠性,當您跨多部主機伺服器執行相同映像的多個實例時,通常希望每個容器(映射實例)在不同的主機伺服器或不同容錯網域中的 VM 中執行。
簡言之,容器提供隔離、可移植性、靈活度、延展性,以及整個應用程式生命週期工作流程的控制優點。 最重要的優點是開發與 Ops 之間所提供的環境隔離。