Docker 的 8 個(gè)應(yīng)用場景,看看你知道幾個(gè)?!
點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)
來源:http://dockerone.com/article/126

1、簡化配置
這是Docker公司宣傳的Docker的主要使用場景。虛擬機(jī)的最大好處是能在你的硬件設(shè)施上運(yùn)行各種配置不一樣的平臺(tái)(軟件、系統(tǒng)),Docker在降低額外開銷的情況下提供了同樣的功能。
它能讓你將運(yùn)行環(huán)境和配置放在代碼中然后部署,同一個(gè)Docker的配置可以在不同的環(huán)境中使用,這樣就降低了硬件要求和應(yīng)用環(huán)境之間耦合度。

2、代碼流水線管理
前一個(gè)場景對(duì)于管理代碼的流水線起到了很大的幫助。代碼從開發(fā)者的機(jī)器到最終在生產(chǎn)環(huán)境上的部署,需要經(jīng)過很多的中間環(huán)境。
而每一個(gè)中間環(huán)境都有自己微小的差別,Docker給應(yīng)用提供了一個(gè)從開發(fā)到上線均一致的環(huán)境,讓代碼的流水線變得簡單不少。

3、提高開發(fā)效率
這就帶來了一些額外的好處:Docker能提升開發(fā)者的開發(fā)效率。
如果你想看一個(gè)詳細(xì)一點(diǎn)的例子,可以參考Aater在DevOpsDays Austin 2014大會(huì)或者是DockerCon上的演講:
http://www.slideshare.net/Flux7Labs/using-docker-to-improve-web-developer-productivity-dev-opsdays-austin-may-5
不同的開發(fā)環(huán)境中,我們都想把兩件事做好。一是我們想讓開發(fā)環(huán)境盡量貼近生產(chǎn)環(huán)境,二是我們想快速搭建開發(fā)環(huán)境。
理想狀態(tài)中,要達(dá)到第一個(gè)目標(biāo),我們需要將每一個(gè)服務(wù)都跑在獨(dú)立的虛擬機(jī)中以便監(jiān)控生產(chǎn)環(huán)境中服務(wù)的運(yùn)行狀態(tài)。然而,我們卻不想每次都需要網(wǎng)絡(luò)連接,每次重新編譯的時(shí)候遠(yuǎn)程連接上去特別麻煩。
這就是Docker做的特別好的地方,開發(fā)環(huán)境的機(jī)器通常內(nèi)存比較小,之前使用虛擬的時(shí)候,我們經(jīng)常需要為開發(fā)環(huán)境的機(jī)器加內(nèi)存,而現(xiàn)在Docker可以輕易的讓幾十個(gè)服務(wù)在Docker中跑起來。

4、隔離應(yīng)用
有很多種原因會(huì)讓你選擇在一個(gè)機(jī)器上運(yùn)行不同的應(yīng)用,比如之前提到的提高開發(fā)效率的場景等。
我們經(jīng)常需要考慮兩點(diǎn),一是因?yàn)橐档统杀径M(jìn)行服務(wù)器整合,二是將一個(gè)整體式的應(yīng)用拆分成松耦合的單個(gè)服務(wù)(譯者注:微服務(wù)架構(gòu))。如果你想了解為什么松耦合的應(yīng)用這么重要,請(qǐng)參考Steve Yege的論文:
https://plus.google.com/+RipRowan/posts/eVeouesvaVX
文中將Google和亞馬遜做了比較。使用 Docker 部署 Spring Boot 項(xiàng)目推薦閱讀。

5、整合服務(wù)器
正如通過虛擬機(jī)來整合多個(gè)應(yīng)用,Docker隔離應(yīng)用的能力使得Docker可以整合多個(gè)服務(wù)器以降低成本。
由于沒有多個(gè)操作系統(tǒng)的內(nèi)存占用,以及能在多個(gè)實(shí)例之間共享沒有使用的內(nèi)存,Docker可以比虛擬機(jī)提供更好的服務(wù)器整合解決方案。

6、調(diào)試能力
http://flux7.com/blogs/docker/docker-saves-the-day-at-flux7/
找到這一點(diǎn)的例證。另外,Docker 系列面試題和答案全部整理好了,微信搜索Java技術(shù)棧,在后臺(tái)發(fā)送:面試,可以在線閱讀。

7、多租戶環(huán)境
另外一個(gè)Docker有意思的使用場景是在多租戶的應(yīng)用中,它可以避免關(guān)鍵應(yīng)用的重寫。最新 Dockder 面試題整理好了,點(diǎn)擊Java面試庫小程序在線刷題。
我們一個(gè)特別的關(guān)于這個(gè)場景的例子是為IoT(譯者注:物聯(lián)網(wǎng))的應(yīng)用開發(fā)一個(gè)快速、易用的多租戶環(huán)境。這種多租戶的基本代碼非常復(fù)雜,很難處理,重新規(guī)劃這樣一個(gè)應(yīng)用不但消耗時(shí)間,也浪費(fèi)金錢。
使用Docker,可以為每一個(gè)租戶的應(yīng)用層的多個(gè)實(shí)例創(chuàng)建隔離的環(huán)境,這不僅簡單而且成本低廉,當(dāng)然這一切得益于Docker環(huán)境的啟動(dòng)速度和其高效的diff命令。另外,關(guān)注公眾號(hào)Java技術(shù)棧,在后臺(tái)回復(fù):面試,可以獲取我整理的 Docker 系列面試題和答案,非常齊全。
更多詳情:
http://flux7.com/blogs/docker/using-docker-for-quick-and-easy-multi-tenancy/

8、快速開發(fā)
在虛擬機(jī)之前,引入新的硬件資源需要消耗幾天的時(shí)間。Docker的虛擬化技術(shù)將這個(gè)時(shí)間降到了幾分鐘,Docker只是創(chuàng)建一個(gè)容器進(jìn)程而無需啟動(dòng)操作系統(tǒng),這個(gè)過程只需要秒級(jí)的時(shí)間。這正是Google和Facebook都看重的特性。
你可以在數(shù)據(jù)中心創(chuàng)建銷毀資源而無需擔(dān)心重新啟動(dòng)帶來的開銷。通常數(shù)據(jù)中心的資源利用率只有30%,通過使用Docker并進(jìn)行有效的資源分配可以提高資源的利用率。

關(guān)注Java技術(shù)棧看更多干貨


