自容器概念興起,就有很多人認為:容器將取代虛擬機,容器作為"虛擬化2.0"概念獲得企業和開發者的關注。筆者認為,容器非但不會取代虛擬機,相反,二者或將形成一種互為補充的姿態,優化企業的IT體系。
容器的代表作Docker
對于很多程序員來說,或許還不夠了解容器,但一定聽說過Docker。Docker是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,Docker稱之為:Build once,Run anywhere。
很多人都聽說過Dcoker獲得了IBM、微軟、惠普、騰訊等企業的支持,其中Docker在騰訊英雄聯盟游戲中的表現更讓很多人都堅信,以Docker為代表的容器必然在不久的將來徹底代替虛擬機。
而Docker作為最流行的容器工具,和容器目前的事實標準收到越來越多人的關注,究竟容器/Docker與虛擬機之間的博弈會以何種方式收場,我們還不得而知,但筆者預測,未來容器技術可能會與虛擬化技術成為相輔相成的關系。
Docker與鏡像概念
在2016年的DockerCon大會上,Docker再次推翻了之前PaaS層定義,樹立了一個自己的新標準:Serverless無服務器架構。同時,Docker的鏡像概念已經成為很多依托Docker技術成立的云企業的賣點。
鏡像可以應用程序和它的應用環境一起打包,形成一個"集裝箱",放入倉庫。然后這個集裝箱隨時下載、解壓、應用,減輕了開發者的負擔,不但迅速還能夠保證一致性。
Docker PK虛擬機
TCO:根據相關機構調查顯示,超過百分之四十的企業選擇用Docker是因為它比虛擬機更便宜。由于Docker是一款開源的容器引擎,這決定了Docker本身免費的事實。
而虛擬機是相較傳統物理機更為節約資源的方式,因為它能形成一個有效的、獨立的真實機器的副本,進而節約企業TCO,受到很多企業的歡迎。
敏捷性:當敏捷開發、微服務等概念逐漸深入,輕量化已經成為一種新風向。Docker直接建立在操作系統上的方式在啟動方式,讓秒級啟動成為新常態,獲得很多企業的認可。而模塊化讓擴展和遷移都更迅速、可靠,Docker允許我們輕松將應用程序的功能拆分成多個獨立容器,讓Docker輕量化特點進一步凸顯。
安全性:與真實的物理機相比,虛擬機因為Hypervisor層的存在,讓小白用戶也可以對虛擬機進行任何操作,無須擔心對機器本身造成任何損害。對于企業而言,虛擬機經過四十余年的發展已經成為一種成熟的IT技術,在隔離性、安全性上,虛擬機也顯得更為無可挑剔,相比之下,虛擬機也更為安全。而Docker目前備受詬病的一個點就是:隔離性和安全性。
從實現原理上講,Docker有著比虛擬機更少的抽象層,不需要硬件資源池化,不需要Guest OS。與容器相比,虛擬層為用戶提供了一個完整的虛擬機:包括內核在內的一個完整的系統鏡像,虛擬層可以為每個用戶分配虛擬化后的CPU、內存和IO設備資源,為用戶提供一個隔離性更強的系統環境。
結束語
Docker或者說容器技術和虛擬機并非簡單的取舍關系,如果你希望一個完全隔離的和資源有保障的環境,那么虛擬機是你的不二選擇;如果你只希望進程之間相互隔離,同時擁有輕量化的屬性,那么linux容器技術或者Docker,才是更好的選擇。