8個Docker的真實應用場景
在這篇文章中,我想介紹並分享一些Docker的實際應用案例。
在我們討論Docker的使用場景之前,先來看看Docker這個工具有什麼特別的地方吧。
Docker提供了輕量級的虛擬化,它幾乎沒有額外開銷,這個特性非常酷。
首先你可以在享有Docker帶來的虛擬化層的時候卻不用擔心因此而帶來的額外開銷。第二個優點是比之虛擬機器,你能在單一機器上啟動更多數量的容器。
另外一個強有力的影響是容器的啟與停都能在幾秒中完成。Docker公司的創始人, Solomon Hykes,曾經概括過Docker在單純的LXC之上做了哪些事情。
下面這些Docker的使用場景,為你展示瞭如何藉助Docker的強力,在非常低的額外開銷的情況下,打造一個一致性的環境。
1. 簡化配置
這是Docker公司宣傳的Docker的主要使用場景。虛擬機器的一個最大好處是能在你的硬體設施上執行各種配置不一樣的平臺。Docker在降低額外開銷的情況下提供了同樣的功能。它能讓你將你的執行環境和配置放在程式碼裡面然後部署。同一個Docker的配置可以使用在不同的環境裡面。這樣就降低了硬體要求和應用環境之間耦合度。
2. 程式碼流水線管理
前一個場景對於管理程式碼的流水線起到了很大的作用。程式碼從開發者的機器到最終在生產環境上的部署,需要流過很多的中間環境。而每一箇中間環境都有自己微小的差別,Docker給應用提供了一個從開發到上線均一致的環境,讓程式碼的流水線變得輕鬆不少。
3. 提升開發者效率
這就帶來了一些額外的好處 – Docker能提升開發者的開發效率。如果你想看一個詳細一點的例子,可以參考Aater在DevOpsDays Austin 2014 大會或者是DockerCon上的演講。
不同開發者的環境中,我們想把兩件事做好,但卻各自差別不小。我們想讓開發環境儘量貼近生產環境,我們想開發環境儘量的以便開發中的互動使用。
理想狀態中,要達到第一個目標,我們需要將每一個服務跑在獨自的虛擬機器中以便顯現生產環境中服務的運作狀態。然而,我們卻不想每次必須要需要網路連線,每次重新編譯的時候遠端連線上去幹事情特別麻煩。這就是Docker做的特別好的地方,開發環境通常記憶體不足,沒有像虛擬機器那般貪婪的佔用記憶體,Docker可以輕易的讓幾十個服務在Docker中跑起來。
4. 隔離應用
有很多種原因會讓你結果選擇在一個機器上跑著不同的應用。一個場景便是早期描述的一個便於提高開發者開發效率,但是還有其他的場景。
有兩個需要考慮的便是因為降低成本的需要而進行的伺服器整合,和將一個一體化的應用漸進式的拆分成無耦合的單塊的計劃。如果你想了解為什麼無耦合的應用十分重要,請參考這篇Steve Yege的論文。文中將Google和亞馬遜做了比較。
5. 整合伺服器
正如使用虛擬機器來整合多個應用,Docker隔離應用的能力使Docker能整合多個伺服器以達到降低成本的效果。由於沒有多個作業系統的記憶體佔用,以及能在多個例項之間共享沒有使用的記憶體,Docker能比虛擬機器方案提供更好的伺服器整合。
6. 除錯能力
Docker提供了很多的工具,他們不一定只是只針對容器,但是他們針對容器這個概念卻工作的十分好。他們同時也提供了十分有效的功能,這包括可以為容器設定檢查點,設定版本,和檢視兩個容器之間的差別。這些特性在於查修bug的時候會十分有效。你可以在Docker拯救世界的文章裡找到這一點的例證。
7. 多租戶環境
另外一個Docker有意思的使用場景是在多租戶的應用中,可以避免關鍵應用的重寫。我們一個特別的關於這個場景的例子是是為IoT的應用開發一個快速,易用的多租戶環境。這種多租戶的原始碼庫遠超人想象的複雜,邏輯寫死,接手太難。將一個應用重新架構不但消耗時間,也浪費金錢。
使用Docker,為每一個租戶的應用層的多個例項建立隔離的環境簡單且成本低廉。這之所以可能,跟Docker環境的啟動速度和其高校的對比命令是有關的。
你可以在這裡瞭解關於此場景的更多資訊。
8. 快速開發
在虛擬機器之前,引入新的硬體資源需要耗費幾天的時間。虛擬化技術將這個時間降到了幾分鐘,Docker通過只是為程式建立一個容器無需啟動作業系統,將這個時間降到了幾秒鐘。這就是Google和Facebook都不得不用的黑科技。
你可以在你的資料中心建立銷燬資源而無需擔心重新啟動的開銷。通常資料中心的資源利用率為30%,依靠更加有效的資源分配將將這個數字提升不會很難。並且,建立一個新的例項能更加有效的實現資源分配。
還有更多的Docker的應用場景記錄於各種文章裡面。你可以在此發現更多的案例研究。
對於我們來說,使用Docker的動機永遠是選擇正確的工具應用到工作中。最有意思的部分是業務場景,然後我們在業務場景上發揮工具的最大效能。
相關文章
- 八個Docker的真實應用場景Docker
- 八個 Docker 的真實應用場景Docker
- Docker 的應用場景在哪裡Docker
- 代理IP的三個實際應用場景
- 【實操】小程式的應用場景分析——線下場景應用
- 【docker專欄1】docker解決的實際問題及應用場景Docker
- 真實場景再現
- DATAGUARD實際的應用場景
- 13 個 GCD 應用場景GC
- Docker開發例項之應用場景Docker
- GAN的五個神奇應用場景
- 使用 WebSockets 的 9 個應用場景Web
- Redis實際應用場景Redis
- 閉包實際場景應用
- nodejs實際應用場景NodeJS
- 分享一個生產者-消費者的真實場景
- FRAM的應用場景
- Numpy的應用場景
- redis的應用場景Redis
- Vuex 的應用場景Vue
- NoSQL資料庫的35個應用場景SQL資料庫
- SAP BTP MTA 應用的應用場景
- ES 應用場景
- Zookeeper應用場景
- 3.4 應用場景
- DDD應用場景
- AR擴增實境可應用的場景
- Rails框架在實時場景下的應用AI框架
- 理解 Fragment 的應用場景Fragment
- 製造業人工智慧8大應用場景人工智慧
- 一個輕APP場景應用-外掛APP
- 函式索引的兩個應用場景示例(下)函式索引
- Flutter - IOT領域應用場景實戰Flutter
- JavaScript模板引擎的應用場景及實現原理JavaScript
- Nginx應用場景配置Nginx
- snapshot應用場景
- BFC的概念與應用場景
- ThottleStop 軟體的應用場景