Q1:Container技術(shù)和服務器虛擬化是一樣的技術(shù)嗎?
A:不是。兩者雖然都屬于虛擬化的技術(shù),目標都是為了將一套應用程序所需的執(zhí)行環(huán)境打包起來,建立一個孤立環(huán)境,方便在不同的硬件中移動,但兩者的運作思維截然不同。簡單來說,常見的傳統(tǒng)虛擬化技術(shù)如vSphere或Hyper-V是以操作系統(tǒng)為中心,而Container技術(shù)則是一種以應用程序為中心的虛擬化技術(shù)。
傳統(tǒng)虛擬化技術(shù)從操作系統(tǒng)層下手,目標是建立一個可以用來執(zhí)行整套操作系統(tǒng)的沙盒獨立執(zhí)行環(huán)境,習慣以虛擬機(Virtual Machine)來稱呼。而Container技術(shù)則是直接將一個應用程序所需的相關(guān)程序代碼、函式庫、環(huán)境配置文件都打包起來建立沙盒執(zhí)行環(huán)境,為了和傳統(tǒng)虛擬化技術(shù)產(chǎn)生的虛擬機區(qū)分,Container技術(shù)產(chǎn)生的環(huán)境就稱為Container。
Q2:一般常見的虛擬機和Container有何不同?
A:最明顯的差別是,虛擬機需要安裝操作系統(tǒng)(安裝Guest OS)才能執(zhí)行應用程序,而Container內(nèi)不需要安裝操作系統(tǒng)就能執(zhí)行應用程序。Container技術(shù)不是在OS外來建立虛擬環(huán)境,而是在OS內(nèi)的核心系統(tǒng)層來打造虛擬執(zhí)行環(huán)境,透過共享Host OS的作法,取代一個一個Guest OS的功用。Container也因此被稱為是OS層的虛擬化技術(shù)。
Q3:為何Container是輕量級虛擬化技術(shù)?
A:因為Container技術(shù)采取共享Host OS的作法,而不需在每一個Container內(nèi)執(zhí)行Guest OS,因此建立Container不需要等待操作系統(tǒng)開機時間,不用1分鐘或幾秒鐘就可以啟用,遠比需要數(shù)分鐘甚至數(shù)十分鐘才能開啟的傳統(tǒng)虛擬機來的快。
Q4:Container技術(shù)是全新的技術(shù)嗎?
A:不是,早在1982年,Unix系統(tǒng)內(nèi)建的chroot機制也是一種Container技術(shù)。其他如1998年的FreeBSD jails、2005年出現(xiàn)的Solaris Zones和OpenVZ,或像是Windows系統(tǒng)2004年就有的Sandboxie機制都屬于在操作系統(tǒng)內(nèi)建立孤立虛擬執(zhí)行環(huán)境的作法,都可稱為是Container的技術(shù)。
直到2013年,dotCloud這家PaaS服務公司開源釋出了一套將Container標準化的平臺Docker,大受歡迎,所以,dotCloud決定以Docker為名成立新公司力推。