淺談虛擬機(VM)與容器(Container)之差異

淺談虛擬機(VM)與容器(Container)之差異

在現今網路世界中,「雲服務」幾乎是無所不在,而引領我們實踐這一切的關鍵則是「虛擬化技術」。一般而言,雲端應用服務是由實體伺服器 (Host) 上的「虛擬機 Virtual Machine (VM)」所提供。這些應用程式,是在開發人員 (Development Team) 發佈完成後,轉交給維運人員 (Operation Team),並於 VM 上運行。

選擇VM所帶來的好處

至於為何選擇 VM,而非直接在實體伺服器上運行呢?以下僅列出三項主要的好處:

  1. 每個應用程式 (App) 擁有獨立甚至相互不同的作業系統、環境
  2. 管理 Host 的資源 (CPU、RAM、Storage) 並分配於各 VM,供 App 有效利用
  3. 透過 Hypervisor 管理 VM 快照 (Snapshot),以實踐災難恢復 (Disaster Recovery)

容器 Container 的竄紅

然而,科技始終來自於人的不滿足。業界開始認為 VM 仍然佔用太多不必要的資源,因此「容器 Container」便竄紅起來。容器的運作不會模擬硬體資源,故相對於 VM,容器並沒有額外運行作業系統 (Guest OS)。簡而言之,容器就是虛擬化「應用程序及其相對應的環境」。

容器所帶來的好處就更多了,以下僅說明一小部分:

  1. VM 的映像檔通常落在數 GB 至數十 GB 都有,而容器映像檔一般最大也才數百 MB。如此輕量級的特性,讓映像檔管理以及 App 的啟動、關閉流程皆方便迅速許多。
  2. 容器的移轉性強;只要在實體伺服器上安裝了 Docker,無論 Host OS 為任何作業環境,皆能正常運行容器化後的應用程序。
  3. 容器擁有不可變的特性,意指只要 App 能正常運作一次,未來不必擔心系統環境變動造成 App 出錯。
  4. 透過 Docker 容器引擎,容器的開發、管理與運行非常簡易,因此實踐 DevOps 的運作 (Development + Operation),解決以往常見開發與維運立場不一的問題。

如此看來,容器似乎將完全掌握未來市場,並取代 VM 的所有應用!事實不然;至少目前還不至於。在選擇使用容器或虛擬機時,有些很關鍵的因素必須深入考量,其中, App 所運作的環境便尤其重要。前面提及容器不可變之特性,雖然非常有利於 App 的運行,但同時也意味著將無法隨意修改系統環境。如此一來,若維運人員需要升級或更動系統設置 (System Configuration) 時,則會遇到不少麻煩,通常也必須由開發人員協助深入改寫程序。反之,在使用 VM 的情況下,維運人員將能夠相對輕易地管理系統環境。

簡單地做個總結:如果雲服務符合以下兩點中的任一條件,VM 的架構則較符合您的需求。

  1. 在 App 運行的環境中,維運人員需要管理到系統底層
  2. 必須建構在許多不同的作業系統之上

除此之外,大部分的情況下將建議把 App 容器化,跟上時代趨勢,藉此提升市場競爭力。

撰文: 陳逸凡 迎棧科技解決方案架構師

訂閱電子報

Select list(s)*

 

Loading