Docker 的 8 個應用場景,真香啊!


來源:http://dockerone.com/article/126

Flux 7在本文中介紹了常用的8個Docker的真實使用場景,分別是簡化配置、代碼流水線管理、提高開發效率、隔離應用、整合服務器、調試能力、多租戶環境、快速開發。

這幾天群里都在討論Docker的應用場景,轉載這篇文章的初衷是想跟大家有一些交流互動,你是如何使用Docker的?是什么樣的應用場景?歡迎回復或投稿給我。

以下為原文:

幾周前Flux 7參加了DockerCon,DockerCon是首個以Docker為中心的技術大會。它面向開發者以及對在Docker開放平台上構建、交付、運行分布式應用感興趣的從業者,不論這些開放平台是運行於自用筆記本上或者是數據中心的虛擬機上。

Flux 7的CEO Aater Suleman和一位客戶共同發表了演講。雖然DockerCon大會十分有趣,但我覺得大會太關注Docker的具體細節,而忽略了Docker的使用場景。以下是作者分享的一些Docker的實際應用案例。

1、簡化配置


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

2、代碼流水線管理


前一個場景對於管理代碼的流水線起到了很大的幫助。代碼從開發者的機器到最終在生產環境上的部署,需要經過很多的中間環境。而每一個中間環境都有自己微小的差別,Docker給應用提供了一個從開發到上線均一致的環境,讓代碼的流水線變得簡單不少。

3、提高開發效率


這就帶來了一些額外的好處:Docker能提升開發者的開發效率。如果你想看一個詳細一點的例子,可以參考Aater在DevOpsDays Austin 2014大會或者是DockerCon上的演講:

http://www.slideshare.net/Flux7Labs/using-docker-to-improve-web-developer-productivity-dev-opsdays-austin-may-5

不同的開發環境中,我們都想把兩件事做好。一是我們想讓開發環境盡量貼近生產環境,二是我們想快速搭建開發環境。

理想狀態中,要達到第一個目標,我們需要將每一個服務都跑在獨立的虛擬機中以便監控生產環境中服務的運行狀態。然而,我們卻不想每次都需要網絡連接,每次重新編譯的時候遠程連接上去特別麻煩。這就是Docker做的特別好的地方,開發環境的機器通常內存比較小,之前使用虛擬的時候,我們經常需要為開發環境的機器加內存,而現在Docker可以輕易的讓幾十個服務在Docker中跑起來。

4、隔離應用


有很多種原因會讓你選擇在一個機器上運行不同的應用,比如之前提到的提高開發效率的場景等。

我們經常需要考慮兩點,一是因為要降低成本而進行服務器整合,二是將一個整體式的應用拆分成松耦合的單個服務(譯者注:微服務架構)。如果你想了解為什么松耦合的應用這么重要,請參考Steve Yege的論文:

https://plus.google.com/+RipRowan/posts/eVeouesvaVX

文中將Google和亞馬遜做了比較。

5、整合服務器


正如通過虛擬機來整合多個應用,Docker隔離應用的能力使得Docker可以整合多個服務器以降低成本。由於沒有多個操作系統的內存占用,以及能在多個實例之間共享沒有使用的內存,Docker可以比虛擬機提供更好的服務器整合解決方案。

6、調試能力


Docker提供了很多的工具,這些工具不一定只是針對容器,但是卻適用於容器。它們提供了很多的功能,包括可以為容器設置檢查點、設置版本和查看兩個容器之間的差別,這些特性可以幫助調試Bug。

你可以在《Docker拯救世界》的文章:

http://flux7.com/blogs/docker/docker-saves-the-day-at-flux7/

找到這一點的例證。

7、多租戶環境


另外一個Docker有意思的使用場景是在多租戶的應用中,它可以避免關鍵應用的重寫。我們一個特別的關於這個場景的例子是為IoT(譯者注:物聯網)的應用開發一個快速、易用的多租戶環境。這種多租戶的基本代碼非常復雜,很難處理,重新規划這樣一個應用不但消耗時間,也浪費金錢。

使用Docker,可以為每一個租戶的應用層的多個實例創建隔離的環境,這不僅簡單而且成本低廉,當然這一切得益於Docker環境的啟動速度和其高效的diff命令。

更多詳情:

http://flux7.com/blogs/docker/using-docker-for-quick-and-easy-multi-tenancy/

8、快速開發


在虛擬機之前,引入新的硬件資源需要消耗幾天的時間。Docker的虛擬化技術將這個時間降到了幾分鍾,Docker只是創建一個容器進程而無需啟動操作系統,這個過程只需要秒級的時間。這正是Google和Facebook都看重的特性。

你可以在數據中心創建銷毀資源而無需擔心重新啟動帶來的開銷。通常數據中心的資源利用率只有30%,通過使用Docker並進行有效的資源分配可以提高資源的利用率。另外,Docker 系列面試題和答案全部整理好了,微信搜索​Java技術棧,在后台發送:面試,​可以在線閱讀。

近期熱文推薦:

1.1,000+ 道 Java面試題及答案整理(2022最新版)

2.勁爆!Java 協程要來了。。。

3.Spring Boot 2.x 教程,太全了!

4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這才是優雅的方式!!

5.《Java開發手冊(嵩山版)》最新發布,速速下載!

覺得不錯,別忘了隨手點贊+轉發哦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM