作者 | Molly Calancy 譯者 | Sambodhi 策劃 | 褚杏娟 虛擬化從根本上改變了數(shù)據(jù)中心的運作方式,,這過去還不是很久,。2002 年,VMware 發(fā)布了首款虛擬機管理程序 ESX Server 1.5,,一定程度上引領了企業(yè)級虛擬機的主流應用,。對于千禧一代來說,這一切都仿佛發(fā)生在昨天,。 這項技術使基礎設施的利用率發(fā)生了革命性的變化,,用戶可以在同一個硬件上運行多個操作系統(tǒng),使硬件資源的應用最大化,。隨后,,比虛擬機更年輕時尚、Z 世代也更熟悉的容器,,在 2013 年隨著 Docker 的發(fā)布而大放異彩,,也刺激了容器主流應用產(chǎn)品的研發(fā)。容器允許多個孤立的應用程序共享同一個操作系統(tǒng)內(nèi)核,。 雖然虛擬機和容器的工作方式不同,,但這兩種技術非常相似。這也就產(chǎn)生了一個問題:容器會取代虛擬機嗎,?今天,,我們來分析下這個問題。 虛擬機與容器的不同 虛擬機是由軟件定義的計算機,,運行在 Hypervisor(虛擬機監(jiān)視器)之上,,允許多個操作系統(tǒng)共享同一底層的物理硬件,,并在相互隔離的情況下運行。Hypervisor 將底層硬件虛擬化,,每個虛擬機都運行自己的操作系統(tǒng)(OS),。 在虛擬機之前,一臺服務器僅能支持一個操作系統(tǒng),,用戶無法實現(xiàn)在同一臺服務器上運行不同操作系統(tǒng)下的業(yè)務應用,,或者這些應用在運行時不會互相干涉。每個運行的業(yè)務應用,,比如電子郵件或者 CRM,,都必須擁有自己的(通常配置過高,利用率低)硬件集,。有了虛擬機后,,一臺服務器就能同時支持多個操作系統(tǒng)和多個應用,大大降低了企業(yè)在硬件和硬件管理方面的開支,。 容器同樣是由軟件定義的計算實例,,但是它們在一個共享的主機操作系統(tǒng)上運行。容器將軟件打包成可移植的,、可執(zhí)行的單元,,具有所有必需的依賴關系,能夠在任何地方運行,,包括筆記本計算機,、服務器、云端等,。下表列出了虛擬機和容器的不同之處: 因為無須拖動全部的操作系統(tǒng)代碼,,所以容器更加輕便(兆字節(jié),相對于虛擬機的千兆字節(jié)),,啟動速度也比虛擬機更快,。在一臺服務器上,用戶可以使用容器來運行比虛擬機多兩到三倍的應用,。 僅憑這一點,,或許就可以說明容器是未來的趨勢,而虛擬機則是舊聞,。 容器會取代虛擬機嗎,? 容器是否會取代虛擬機,這個問題看起來簡單,,但并不容易作出預言,。我們可以看一下支持虛擬機和支持容器的人分別都有哪些理由。 支持虛擬機的理由 盡管容器更小、更快,,但容器永遠不會殺死虛擬機,,理由如下: 熟悉度和成熟度。盡管科技行業(yè)對新技術的接受很快,,但虛擬機在許多組織中的應用已經(jīng)非常成熟,。大多數(shù)企業(yè)都有固定的流程、程序和團隊來管理虛擬機的部署,,包括備份和監(jiān)控。雖然“我們一直在用的方式”并不總是繼續(xù)做某件事的最佳理由,,但是還有一個理論是“如果它沒有壞,,就不要去修復”。某個能夠在虛擬機上正常工作的單體應用,,為了保證其能在容器環(huán)境下工作,,用戶就必須對其進行重構,但有時這種努力并不值得,。 擁有完整的操作系統(tǒng)功能,。使用虛擬機與所有操作系統(tǒng)服務一起工作,有時比更協(xié)調(diào)的“Docker Compose”或具有不必要復雜性的 Kubernetes 集群更可取,,特別是對于一些復雜的應用程序,。 異質(zhì)環(huán)境。虛擬機的作用就是可以運行多個操作系統(tǒng),。容器共享同一個操作系統(tǒng)內(nèi)核,,因此需要一個同質(zhì)的環(huán)境。有一種觀點認為,,企業(yè)數(shù)據(jù)中心正朝著更加同質(zhì)化的環(huán)境發(fā)展,,以實現(xiàn)標準化,從而提高運營效率,。但這種情況尚未大規(guī)模發(fā)生,,許多企業(yè)仍然需要運行多個操作系統(tǒng),并且在可預見的將來也會如此,。 安全性,。容器的安全性經(jīng)常被虛擬機擁躉者攻擊。虛擬機支持者認為,,容器共享主機操作系統(tǒng)資源而更容易受到攻擊,,虛擬機則在其虛擬墻內(nèi)包含操作系統(tǒng)。如果一個容器被攻擊了,,它可能會感染其他共享主機操作系統(tǒng)的容器,。如果一個虛擬機被攻擊,虛擬機、主機服務器和其他虛擬機之間則會形成一道額外的屏障,。 兩者不是非此即彼的,,企業(yè)可以兼而有之。用戶可以在虛擬機上運行容器,,這樣就可以讓已經(jīng)擁有虛擬機的企業(yè)能夠采用容器,。他們可以在不必完全放棄虛擬機的情況下,充分利用容器的速度和敏捷性,。 支持容器的理由 容器也有很多優(yōu)勢,,是什么讓它們成為取代虛擬機的競爭者?容器的支持者通常持以下觀點: 速度和可移植性,。容器啟動只需幾秒鐘,,而虛擬機則需要幾分鐘,但容器帶來的速度優(yōu)勢并不限于啟動時間,。容器解決了環(huán)境一致性問題,,開發(fā)人員在配置環(huán)境和處理錯誤上花費的時間少很多。像 Docker 這樣的容器引擎也有容器鏡像庫,,加快了開發(fā)者們的工作,,而像開放容器標準(Open Container Initiative,OCI)這樣的項目已經(jīng)制定了容器的標準,,從而簡化了部署,。 可擴展性。通過 Kubernetes 或 Cycle.io 等容器編排器,,容器可以根據(jù)流量需求自動擴展,,并在需要的時候復制容器鏡像,不需要的時候?qū)⑵潢P閉,。容器的小尺寸和啟動速度意味著其擴展速度比虛擬機更快,。 模塊化。容器徹底改變了應用開發(fā),,使應用可以作為單獨的微服務松散地耦合在一起進行開發(fā),。DevOps 和 CI/CD 實踐大大加快了應用程序的交付速度。正如一位高級軟件工程師所說,,整個環(huán)境像樂高那樣堆疊起來,,這樣的能力很強大。容器的小尺寸和可移植性意味著應用程序可以在小的組件中構建,,這些部分可以堆疊在一起,,構建一個完整的應用程序。 易于更新,。為容器中微服務而構建的應用程序中的更新和重新部署,,要比具有更新和停機需求的全功能操作系統(tǒng)更容易管理,。抽象的操作系統(tǒng)。由于容器對操作系統(tǒng)進行了抽象,,所以在處理虛擬機化問題上,,容器要比虛擬機簡單得多。在 Mac OS 和 M1 操作系統(tǒng)中,,虛擬化非常棘手,,但是容器可以使虛擬環(huán)境在它們上面輕松運行。 定 論 容器會在開發(fā)環(huán)境中取代虛擬機嗎,?似乎已經(jīng)有定論了,。但是容器會全面取代虛擬機嗎?事實可能并非如此,。 開發(fā)者不會再像以前那樣構建一個單一的應用,。通過使用容器,他們能夠從以前環(huán)境的不一致中解脫出來,,更多地關注在代碼構建、創(chuàng)建更好的軟件以及更快速地編寫代碼,。容器在開發(fā)者中已經(jīng)成為了一種主流的虛擬化技術,。 但是,容器究竟是應用程序的傳遞還是基礎結(jié)構,,兩者有很大的區(qū)別,。虛擬機運行緩慢,、可移植性較差而且很重,,但在部署企業(yè)的基礎設施和運行傳統(tǒng)單體應用時,虛擬機依然是優(yōu)先考慮的技術,。比如,,盡管容器是應用程序開發(fā)的首選技術,,但其他領域的 IT 團隊,,比如教育行業(yè),,不大會愿意花時間來將其定制化的學生信息系統(tǒng)重構為微服務架構,,這些企業(yè)也無法用一個容器來取代其為學生提供的數(shù)以千計的虛擬機,。 最終答案是什么?在當今的數(shù)據(jù)中心里,,容器和虛擬機器都占有一席之地,。
|
|
來自: 任易x9cojw24ff > 《環(huán)境安裝》