許多企業 IT 團隊現在比幾年前部署了更多的應用程式,但基礎架構成本並未按比例降低。對於仍仰賴傳統虛擬機器處理所有工作負載的組織而言,承諾要以更少的頻率完成更多工作,仍是難以捉摸的。
容器虛擬化是一種輕量化的虛擬化技術,能讓應用程式在稱為容器的獨立隔離空間中運作,同時共享同一個作業系統核心。有別於傳統 VM 虛擬化要將整個硬體堆疊虛擬化,容器僅虛擬化作業系統本身,因此能大幅提升資源使用效率、部署速度與可攜性。這種作業系統層級的虛擬化改變了組織如何建立、部署和擴展現代應用程式。
儘管廣泛採用,企業仍面臨著一項關鍵挑戰:管理容器化環境中的持久性資料。雖然容器在無狀態工作負載中表現優異,但應用程式需要持續資料,如資料庫、檔案上傳、交易日誌,其複雜性卻是倍增的。
本指南從架構和實際觀點來檢驗容器虛擬化。您會了解容器與虛擬機器的差異,以及每一種方法的合理性,以及如何解決持續性儲存挑戰,以決定生產是否成功。
容器虛擬化是透過作業系統級虛擬化來運作,由主機作業系統的核心為每個容器提供獨立隔離的用戶空間。每個容器都相信擁有作業系統的專屬存取權,但主機上的所有容器都共用相同的核心,這與傳統虛擬化截然不同。
容器運行時間(Docker Engine、容器或 CRI-O)使用兩個主要的 Linux 核心功能管理隔離。命名空間可隔離流程 ID、網路介面和檔案系統等系統資源。控制組(群組)會限制資源消耗,防止任何單一容器將 CPU、記憶體或 I/O 頻寬整併。
啟動容器時,執行階段會建立新的命名空間設定,並指派 cgroup 限制。容器映像是包含應用程式碼、執行階段、程式庫和相依項目的範本,會解壓縮到這個隔離的環境中。與啟動整個作業系統的 VM 不同,容器幾乎立即開始,因為容器只是在已啟動的主機內核上執行的隔離流程。
此架構的啟動時間從數百毫秒到數十秒不等。
然而,隔離並非絕對。所有容器共用主機核心,這意味著核心弱點可能會影響該主機上的所有容器。這樣的權衡—重量輕但隔離不完全—在企業部署中推動許多架構決策。
容器與 VM 之間的選擇,並非選擇較新的技術。每一種方法都具有不同的優勢,具體取決於工作負載需求、安全需求和操作限制。
虛擬機器透過硬體虛擬化運作,Hypervisor 會為每個 VM 建立虛擬硬體。每個 VM 都運行完整的客體作業系統,包括自己的核心、系統庫和二進位檔案。這提供了強大的隔離能力;遭入侵的 VM 無法直接存取 Hypervisor 或其他 VM,但需要大量資源。
Containers共用主機作業系統核心,同時維持隔離的使用者空間。容器僅包含應用程式及其相依性,通常與 VM 的 GB 相比,需要 MB。這種效率讓相同的硬體比 VM 執行更多容器。
VM 透過硬體虛擬化提供更強大的隔離,使其成為多租戶環境或不受信任程式碼的首選。容器提供流程層級的隔離,通常足以處理受信任的工作負載,但共用內核仍是敏感應用程式的考量因素。
容器虛擬化可大幅改善開發速度、營運效率和基礎架構成本。如此可縮短部署時間,並降低容器化適當工作負載後的基礎架構成本。
容器透過環境的一致性,消除了"在機器上運作"的問題。開發人員使用所有相依項目來封裝應用程式,確保從筆記型電腦到生產都採取相同的行為。這種一致性可減少部署故障。
CI/CD 管線利用容器加快迭代速度,讓建置時間從數小時降至數分鐘。回復變得輕而易舉;只需重新部署先前的容器影像即可。舉例來說,Netflix 每天最多可部署 50 萬個容器。輕量化的大自然改變了資源經濟。自動擴展在容器規模上變得非常實用,Kubernetes 在幾秒內就能推出新的容器,回應載入,而 VM 自動擴展只需要幾分鐘。這種回應性意味著更精簡地運行,並在需要時精確地擴展,而非過度配置。
容器從底層基礎架構中抽象應用程式,實現真正的可攜性。相同的容器映像在開發人員的筆記型電腦、測試伺服器和生產叢集上運作完全相同,無論是就地部署還是跨多個雲端。
這種可攜性無需廠商鎖定即可實現多雲策略。企業組織在 AWS、Azure 和地端中同時運行容器,根據成本、效能或法規要求來移動工作負載。
但可攜性卻有限制。具有持久性儲存需求的容器需要謹慎的架構,才能在資料搬移期間維持資料的可用性。與無狀態微服務相比,具狀態應用程式—資料庫、檔案儲存、訊息佇列—需要額外考量。
雖然容器在運行無狀態應用程式方面表現優異,但持久性儲存仍是容器部署中最重要的挑戰。與內建持久性儲存的 VM 不同,容器的設計是永無止境的。當容器停止時,其可寫入層及其內儲存的任何資料會消失。
這造成了根本的問題:許多企業應用程式都需要持久的資料儲存。資料庫、內容管理系統和交易日誌都需要容器重新啟動後仍能存活的資料。然而,大多數容器討論都將儲存視為事後考量。
容器儲存介面 (CSI) 已成為連接儲存系統與容器化工作負載的業界標準。CSI 讓儲存廠商只要在任何符合 CSI 的調度器上運作,就能寫入外掛程式。
持久性磁碟區 (PV) 提供資料持久性的機制。正確配置後,PV 即獨立於容器生命週期,讓資料能持續透過容器更新、遷移和故障來保存。現代化容器原生儲存解決方案透過動態配置解決這些挑戰,在應用程式要求時自動建立儲存容量。
容器感知的備份解決方案可快照持久性磁碟區,同時維持應用程式的一致性。當備份系統了解容器調度時,復原時間目標 (RTO) 通常在幾分鐘內即可達成。資料區域性對效能有重大影響。高效能儲存平台使用區域性排程,讓容器靠近資料,進而降低延遲。
成功實施容器虛擬化需要仔細規劃平台選擇、調度和安全性。
Docker 仍是開發環境中最廣泛使用的容器工具之一,經常在開發人員採用調查中名列前茅或接近頂尖。在生產 Kubernetes 環境中,容器化通常用來作為容器運行時間,包括 Amazon EKS 和 Google GKE 等託管服務。CRI-O 提供輕量型的 Kubernetes 原生容器執行時間,針對純 Kubernetes 部署進行最佳化。
Kubernetes 已成為標準,容器調度佔有率達 77%。它透過宣告性的配置來自動化部署、擴展和管理,您可以描述自己的需求,而 Kubernetes 則確保符合現實需求。
特定使用案例有替代的編排人員:Docker Swarm 適合小型部署、Amazon ECS 適合 AWS 整合,以及 HashiCorp Nomad 適合異質工作負載。根據規模需求、團隊專業知識和現有基礎架構進行選擇。
容器安全性需要從周邊設備模式轉變為零信任模式。每個容器都需要個別的安全政策,而非仰賴網路邊界。影像掃描在部署前會先找出弱點,領先的登錄系統會自動標記已知 CVE 的容器。
使用公共影像時,供應鏈的安全性變得至關重要。企業組織實施影像簽署、私有登錄與基本影像標準化,以確保容器的驗證。政策引擎執行規則,如“生產中沒有關鍵漏洞”或“所有容器必須以非根使用者的身分運行。”
容器可攜性可充分發揮多雲部署的潛力,但許多組織卻在跨雲端管理上遇到困難。挑戰不是在多個雲端中運行容器,而是在各種環境中高效運行。
真正的雲端可攜性需要抽象的雲端特定服務。組織使用更高層級的摘要與運算子,而非將應用程式與原生雲端服務緊密結合,而是跨環境提供一致的功能。
多雲端器實現了複雜的成本套利。現場實例調度可降低成本,但因雲端和地區而異。進階平台會考量現貨定價、資料輸出成本和區域性變化,來實施跨雲端最佳化。
資料常駐法讓多雲部署變得複雜。政策導向的配置,使用許可控制器自動執行法規遵循。標籤指出資料分類,而放置政策則確保容器僅在合規地區運行。
容器虛擬化從根本上改變了應用程式建立、部署和管理的方式。透過分享作業系統核心,同時維持隔離的使用者空間,容器可提供可衡量的優勢:更快的部署、節省基礎架構,以及近乎即時的擴充。
然而,成功需要同時了解能力和限制。雖然容器在無狀態微服務上表現優異,但持久性儲存仍是決定生產成功的關鍵挑戰。及早解決 Oracle 架構問題的組織,可避免日後重構成本高昂。
無論是將傳統應用程式現代化,還是打造雲原生系統,容器虛擬化都能在採用適當的 Oracle 架構時提供價值。
Portworx® 提供專為容器化應用程式設計的 Kubernetes 原生資料服務平台。Portworx 與容器改良的儲存解決方案不同,直接與 Kubernetes 整合,為持久性資料量提供自動化配置、資料保護和災害復原。
該平台解決了本文所概述的持久性儲存挑戰。自動化的大量配置可免除手動儲存配置。可感知應用程式的快照可維持分散式資料庫間的一致性。跨雲端資料行動性可實現真正的可攜性,無需廠商鎖定。
當 Everpure FlashArray 或 FlashBlade//S 結合使用時,企業可在容器化工作負載下獲得企業級儲存效能。此整合支援復原時間目標,同時維持延遲敏感型應用程式的資料區域性。Pure1® 提供跨容器與儲存基礎架構的 AI 驅動監控,讓營運團隊能統一掌握效能與容量。