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