Docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。
Docker相比傳統(tǒng)虛擬化技術(shù)最明顯的特點(diǎn)就是啟動(dòng)快,資源占用小。因此適合構(gòu)建隔離的標(biāo)準(zhǔn)化的運(yùn)行環(huán)境,輕量級(jí)的PaaS,自動(dòng)化測(cè)試和持續(xù)集成環(huán)境,以及一切可以橫向擴(kuò)展的應(yīng)用。
為了解決開(kāi)發(fā)人員和運(yùn)維人員之間的協(xié)作關(guān)系,加快應(yīng)用交付速度,越來(lái)越多的企業(yè)引入了DevOps這一概念。但是,傳統(tǒng)的開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)、測(cè)試、運(yùn)維是三個(gè)獨(dú)立運(yùn)作的團(tuán)隊(duì),團(tuán)隊(duì)之間溝通不暢,開(kāi)發(fā)運(yùn)維之間沖突時(shí)有發(fā)生,導(dǎo)致協(xié)作效率低下,產(chǎn)品交付延遲, 影響了企業(yè)的業(yè)務(wù)運(yùn)行。Docker技術(shù)將應(yīng)用以集裝箱的方式打包交付,使應(yīng)用在不同的團(tuán)隊(duì)中共享,通過(guò)鏡像的方式應(yīng)用可以部署于任何環(huán)境中。這樣避免了各團(tuán)隊(duì)之間的協(xié)作問(wèn)題的出現(xiàn),成為企業(yè)實(shí)現(xiàn)DevOps目標(biāo)的重要工具。以容器方式交付的Docker技術(shù)支持不斷地開(kāi)發(fā)迭代,大大提升了產(chǎn)品開(kāi)發(fā)和交付速度。
此外,與通過(guò)Hypervisor把底層設(shè)備虛擬化的虛擬機(jī)不同,Docker直接移植于Linux內(nèi)核之上,通過(guò)運(yùn)行Linux進(jìn)程將底層設(shè)備虛擬隔離,這樣系統(tǒng)性能的損耗也要比虛擬機(jī)低的多,幾乎可以忽略。同時(shí),Docker應(yīng)用容器的啟停非常高效,可以支持大規(guī)模的分布系統(tǒng)的水平擴(kuò)展,真正給企業(yè)開(kāi)發(fā)帶來(lái)福音。