最近技術(shù)總監(jiān)叫我們有空去看了一下Docker的內(nèi)容厘线,學(xué)習(xí)一下弟塞,于是便在度娘上搜刮了一番官疲,百度百科的解釋是這樣的:“Docker 是一個開源的應(yīng)用容器引擎泳叠,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的 Linux機器上恢着,也可以實現(xiàn)虛擬化桐愉。容器是完全使用沙箱機制,相互之間不會有任何接口掰派〗霾疲”
看完這句于是我開始有點懵了,這里面涉及到一些詞匯碗淌,比如“容器引擎”、“依賴包”抖锥、“虛擬化”亿眠、“沙箱機制”。好吧開始閱讀理解了- -磅废!“容器引擎”可以理解成一個平臺纳像,可以把你的應(yīng)用程序放進去進行管理(包括構(gòu)建、發(fā)布拯勉、運行···)竟趾,其實它的專業(yè)名詞叫Application Container(應(yīng)用容器憔购,不就是個放app的東西嘛!2砻薄)玫鸟;“依賴包”也就是我們在開發(fā)項目的時候需要用到的支持(好吧!好吧犀勒!好吧屎飘!打個比方,你想要喝水贾费,總得有個杯子吧钦购?杯子就是支持!9酉簟)押桃;“沙箱機制”,至于這個詞我放棄治療了导犹,我也不能統(tǒng)一它的解釋唱凯,就這么地吧。
在明白它大概是個什么東西之后锡足,接下來我們要知道這個東西的用處波丰,其實就是為了保證線下的開發(fā)環(huán)境、測試環(huán)境和線上的生產(chǎn)環(huán)境一致(就是這么簡單2暗谩j獭)。舉個栗子:我們開發(fā)項目需要用到數(shù)據(jù)庫沐批,那么就得裝一個MySQL吧纫骑?那么裝MySQL的話可能要再裝一堆依賴庫,根據(jù)你的操作系統(tǒng)平臺和版本進行設(shè)置九孩,有時候還會從源代碼編譯報出一堆莫名其妙的錯誤(沒錯先馆!就是這么*蛋),萬一你機器掛了躺彬,所有的東西都要重新來煤墙,可能還要把配置在重新弄一遍(此處省略一萬只草泥馬)。但是有了容器宪拥,并且只要你能運行容器仿野,MySQL的配置就全省了。而且一旦你想換臺機器她君,直接把這個容器塞進另一個機器就好了脚作。硬件,操作系統(tǒng),運行環(huán)境什么的都不需要考慮了球涛。
有了這個容器(Docker)劣针,那么只要我們的開發(fā)人員把項目放在上面進行開發(fā),做完后整個容器直接丟給測試亿扁,測試過后把改動的地方改完接著直接上線(這里改動也是在容器中進行改動)捺典,那么這樣就可以保證開發(fā)、測試和線上環(huán)境的一致了魏烫。
相對于VM(虛擬機)Docker 的優(yōu)點:
1.啟動速度快辣苏,容器通常在一秒內(nèi)可以啟動,而玩過 VM就不用我說了吧- -
2.資源利用率高哄褒,一臺普通 PC 可以跑上千個容器稀蟋,你跑上千個 VM 試試
3.性能開銷小, VM 通常需要額外的 CPU 和內(nèi)存來完成 OS 的功能呐赡,這一部分占據(jù)了額外的資源
到這里本文也就結(jié)束了退客,想了解Docker的設(shè)計圖和原理就另外再找吧,這篇文章只是幫助快速認(rèn)識Docker链嘀,有不對的地方請指出或私信我萌狂,感激不盡!