Docker,改變程序世界的箱子

責(zé)任編輯:editor007

作者:給產(chǎn)品經(jīng)理講技術(shù)

2016-01-14 21:45:58

摘自:36kr

本文來(lái)自微信公眾號(hào)“給產(chǎn)品經(jīng)理講技術(shù)”(pm_teacher),歡迎大家關(guān)注。有的同學(xué)可能會(huì)說(shuō)了,這不就是虛擬機(jī)嘛 是的,Docker 算是一種輕量級(jí)的虛擬機(jī),它比起傳統(tǒng)的虛擬機(jī)更快,更節(jié)省資源。

Docker,改變程序世界的箱子

本文來(lái)自微信公眾號(hào)“給產(chǎn)品經(jīng)理講技術(shù)”(pm_teacher),歡迎大家關(guān)注。

最近聽(tīng)了一期羅輯思維,聊的是《改變世界的箱子》,這個(gè)箱子就是集裝箱,它將物流運(yùn)輸過(guò)程標(biāo)準(zhǔn)化為以一個(gè)箱子為單元,簡(jiǎn)化了運(yùn)輸流程,同時(shí)也降低了物流成本,因而造就了一個(gè)高度自動(dòng)化、標(biāo)準(zhǔn)化和低成本的物流體系,極大的促進(jìn)了經(jīng)濟(jì)全球化。這讓我想到,最近在程序界也出現(xiàn)了同樣的一個(gè)箱子,那就是今天要聊的 Docker 容器。

軟件開(kāi)發(fā)中需要面對(duì)的一個(gè)挑戰(zhàn)就是環(huán)境管理問(wèn)題,因?yàn)檐浖⒉皇仟?dú)立運(yùn)行的,它依賴了很多其它的軟件,包括操作系統(tǒng)、運(yùn)行時(shí)、依賴庫(kù)等等,而且對(duì)每個(gè)依賴軟件還有版本要求,有一個(gè)依賴關(guān)系稍微不對(duì),那就可能造成軟件的運(yùn)行異常。產(chǎn)品同學(xué)應(yīng)該有過(guò)這種經(jīng)歷,從開(kāi)發(fā)哥那里要一個(gè)最新版的軟件來(lái)體驗(yàn)功能,結(jié)果裝在自己的電腦上打開(kāi)就掛掉,這個(gè)時(shí)候找開(kāi)發(fā)哥來(lái)解決,開(kāi)發(fā)哥一看就會(huì)說(shuō) “哦,你這環(huán)境不對(duì),換個(gè) Win8 吧,這軟件只能在 Win8 以上運(yùn)行”,或者說(shuō) “這個(gè)軟件需要.Net 框架,你裝個(gè).Net 就好了”。

其實(shí)解決依賴環(huán)境的辦法很簡(jiǎn)單,那就是所有機(jī)器都用同一套環(huán)境。但是對(duì)于一些 web 服務(wù),它所依賴的軟件及關(guān)聯(lián)軟件可能有上百個(gè),讓你去配一臺(tái)機(jī)器已經(jīng)要吐血了,如果讓你把這個(gè)服務(wù)發(fā)布到 100 臺(tái)不同的機(jī)器上,那么你就應(yīng)該會(huì)陣亡了。同時(shí),很有可能因?yàn)椴煌臋C(jī)器已有的環(huán)境不同,你安裝這些依賴的同時(shí)還要保證不能影響其它已有應(yīng)用。

說(shuō)了這么多,其實(shí)就是三個(gè)大問(wèn)題,如何解決環(huán)境依賴?如何解決大規(guī)模部署?如何解決應(yīng)用與應(yīng)用的互相影響?Docker 就是這些問(wèn)題的一種解決方案,它是一個(gè)容器,也可以說(shuō)是一個(gè)軟件集裝箱,這個(gè)箱子里面可以塞入特定版本的操作系統(tǒng)、數(shù)據(jù)庫(kù)、服務(wù)器程序和 web 應(yīng)用,這樣一套完整的 web 服務(wù)就集成在這個(gè)箱子里面了,當(dāng)要發(fā)布服務(wù)的時(shí)候,直接將這個(gè)集裝箱放在我們的服務(wù)器船上。如果你想發(fā)布到 100 臺(tái)機(jī)器上,沒(méi)問(wèn)題,只需要 ctrl-c ctrl-v,將這些集裝箱復(fù)制到 100 臺(tái)機(jī)器上,它不會(huì)在乎船的配置高低,只要能放得下就行。如果你想發(fā)布 10 個(gè)不同的服務(wù),還是沒(méi)問(wèn)題,你只需將這 10 個(gè)不同的集裝箱依次排列在服務(wù)器船上,它們之間完全不會(huì)互相影響,因?yàn)楦髯员绘i在不同的箱子里。

有的同學(xué)可能會(huì)說(shuō)了,這不就是虛擬機(jī)嘛...是的,Docker 算是一種輕量級(jí)的虛擬機(jī),它比起傳統(tǒng)的虛擬機(jī)更快,更節(jié)省資源。打個(gè)比方,虛擬機(jī)就是輪船上的豪華包間,即使它用不了這么多資源,它也霸占著不讓別人使用,而 Docker 容器就是一個(gè)簡(jiǎn)單的集裝箱,它只占據(jù)它需要的資源。

Docker 技術(shù)目前才剛剛開(kāi)始流行,它能不能改變程序世界,讓我們拭目以待吧。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)