1. 需求
軟件開發(fā)一般大致分為兩個(gè)環(huán)節(jié),第一是本地開發(fā)尿赚, 第二是服務(wù)器部署散庶。如果一個(gè)項(xiàng)目本地開發(fā)好了,那么放到服務(wù)器上凌净,有時(shí)候安裝環(huán)境會非常復(fù)雜悲龟,也正是因?yàn)槠鋸?fù)雜性,大公司才會有專門負(fù)責(zé)項(xiàng)目發(fā)布的運(yùn)維人員冰寻。為了解決這個(gè)問題须教,docker技術(shù)應(yīng)運(yùn)而生。
2. 技術(shù)特點(diǎn)
- 環(huán)境隔離
Docker是一種虛擬化技術(shù)斩芭,一大特點(diǎn)就是環(huán)境隔離轻腺。我們知道既然是虛擬化技術(shù),環(huán)境隔離必然是其一大特點(diǎn)划乖,比如我們之前使用過的虛擬機(jī)virtualBox贬养,可以通過該軟件安裝很多個(gè)系統(tǒng)鏡像,然后做到系統(tǒng)與系統(tǒng)之間的隔離琴庵。那么误算,作為一種非逞雒溃火的容器技術(shù),那么它還有其他技術(shù)特點(diǎn)嗎儿礼?
- 鏡像小
VirtualBox雖然能夠完成系統(tǒng)之間的隔離筒占,但是,這些系統(tǒng)文件的鏡像都是非常巨大的蜘犁,常常能夠達(dá)到幾個(gè)G,甚至幾十G止邮,這樣的體量會讓我們的個(gè)人電腦無法承受这橙。
上圖是我們傳統(tǒng)的軟件配置模型,app是指我們開發(fā)的應(yīng)用程序导披,lib是指這些軟件需要的環(huán)境屈扎,那么所有的app都是基于我們在電腦中的這一個(gè)環(huán)境。
上圖則是Docker中的環(huán)境配置撩匕,每個(gè)小塊都是一個(gè)容器鹰晨,有自己的一套環(huán)境,而且止毕,內(nèi)核采用的也是簡化版內(nèi)核模蜡。能夠做到非常小的體積
- 滿足更快速的交付和部署
在敏捷開發(fā)的當(dāng)下,快速開發(fā)應(yīng)用是非常重要的扁凛。傳統(tǒng)的方式是開發(fā)要寫一堆文檔供運(yùn)維人員使用忍疾,然后運(yùn)維按照文檔配置好環(huán)境并講開發(fā)好的jar包跑進(jìn)入。那么現(xiàn)在有了docker谨朝,開發(fā)人員只需要將jar+環(huán)境打包好卤妒,丟給運(yùn)維,讓運(yùn)維運(yùn)行起來就可以了字币。而且则披,比如應(yīng)用需要升級,那么環(huán)境又要變更洗出,這個(gè)過程非常麻煩且痛苦士复,那么使用docker以后,就可以將新內(nèi)容打包一并發(fā)送給運(yùn)維再次執(zhí)行便可以共苛。