八個Docker的真實應用場景
【編者的話】Flux 7介紹了常用的8個Docker的真實使用場景,分別是簡化配置、程式碼流水線管理、提高開發效率、隔離應用、整合伺服器、除錯能力、多租戶環境、快速部署。我們一直在談Docker,Docker怎麼使用,在怎麼樣的場合下使用?也許本文可以幫到你。有需要交流的地方,可以透過評論與我們交流。
幾周前我們參加了DockerCon ,Dockercon是首個以Docker為中心的技術大會。它面向開發者以及對在Docker開放平臺上構建、交付、執行分散式應用感興趣的從業者,不論這些開放平臺是執行於自用筆記本上或者是資料中心的虛擬機器上。我們參加了這次大會,Flux7是Docker基礎的系統整合合作夥伴,同時也是演講嘉賓。
我們的CEO Aater Suleman和我們的一位客戶一同進行了演講。雖然DockerCon大會十分有趣,但我覺得大會太關注Docker的具體細節,而忽略了Docker的使用場景。所以,在這篇文章中,我想介紹並分享一些Docker的實際應用案例。
在我們討論Docker的使用場景之前,先來看看Docker這個工具有什麼特別的地方吧。
Docker提供了輕量級的虛擬化,它幾乎沒有任何額外開銷,這個特性非常酷。
首先你在享有Docker帶來的虛擬化能力的時候無需擔心它帶來的額外開銷。其次,相比於虛擬機器,你可以在同一臺機器上建立更多數量的容器。
Docker的另外一個優點是容器的啟動與停止都能在幾秒中內完成。Docker公司的創始人 Solomon Hykes曾經介紹過Docker在單純的LXC之上做了哪些事情,你可以去看看。
下面是我總結的一些Docker的使用場景,它為你展示瞭如何藉助Docker的優勢,在低開銷的情況下,打造一個一致性的環境。
1. 簡化配置
這是Docker公司宣傳的Docker的主要使用場景。虛擬機器的最大好處是能在你的硬體設施上執行各種配置不一樣的平臺(軟體、系統),Docker在降低額外開銷的情況下提供了同樣的功能。它能讓你將執行環境和配置放在程式碼中然後部署,同一個Docker的配置可以在不同的環境中使用,這樣就降低了硬體要求和應用環境之間耦合度。
2. 程式碼流水線(Code Pipeline)管理
前一個場景對於管理程式碼的流水線起到了很大的幫助。程式碼從開發者的機器到最終在生產環境上的部署,需要經過很多的中間環境。而每一箇中間環境都有自己微小的差別,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環境的啟動速度和其高效的diff命令。
你可以在這裡瞭解關於此場景的更多資訊。
8. 快速部署
在虛擬機器之前,引入新的硬體資源需要消耗幾天的時間。Docker的虛擬化技術將這個時間降到了幾分鐘,Docker只是建立一個容器程序而無需啟動作業系統,這個過程只需要秒級的時間。這正是Google和Facebook都看重的特性。
你可以在資料中心建立銷燬資源而無需擔心重新啟動帶來的開銷。通常資料中心的資源利用率只有30%,透過使用Docker並進行有效的資源分配可以提高資源的利用率。
相關文章
- Docker 的應用場景在哪裡Docker
- 代理IP的三個實際應用場景
- 【docker專欄1】docker解決的實際問題及應用場景Docker
- 真實場景再現
- GAN的五個神奇應用場景
- Docker開發例項之應用場景Docker
- nodejs實際應用場景NodeJS
- 閉包實際場景應用
- 分享一個生產者-消費者的真實場景
- Numpy的應用場景
- FRAM的應用場景
- SAP BTP MTA 應用的應用場景
- AR擴增實境可應用的場景
- 理解 Fragment 的應用場景Fragment
- LINQ SelectMany的應用場景
- 3.4 應用場景
- DDD應用場景
- ES 應用場景
- snapshot應用場景
- Zookeeper應用場景
- 一個輕APP場景應用-外掛APP
- Flutter - IOT領域應用場景實戰Flutter
- BFC的概念與應用場景
- iOS CALayer anchorPoint 的應用場景iOS
- ThottleStop 軟體的應用場景
- canvas的應用場景有哪些?Canvas
- 商品API的應用場景分析API
- 訊息佇列常見的 5 個應用場景佇列
- 訊息佇列常見的5個應用場景佇列
- 品易雲HTTP短效IP的四個應用場景HTTP
- openGauss MOT應用場景
- openGauss-應用場景
- Nginx應用場景配置Nginx
- redis實用場景Redis
- 防抖和節流的應用場景和實現
- Google Guava 在實際場景中的應用封裝GoGuava封裝
- ClickHouse在自助行為分析場景的實踐應用
- 棧的應用場景思路分析和程式碼實現