八個Docker的真實應(yīng)用場景

責(zé)任編輯:editor005

2017-06-26 14:09:00

摘自:中國云計算

Flux 7介紹了常用的8個Docker的真實使用場景,分別是簡化配置、代碼流水線管理、提高開發(fā)效率、隔離應(yīng)用、整合服務(wù)器、調(diào)試能力、多租戶環(huán)境、快速部署。下面是我總結(jié)的一些Docker的使用場景

Flux 7介紹了常用的8個Docker的真實使用場景,分別是簡化配置、代碼流水線管理、提高開發(fā)效率、隔離應(yīng)用、整合服務(wù)器、調(diào)試能力、多租戶環(huán)境、快速部署。我們一直在談Docker,Docker怎么使用,在怎么樣的場合下使用?也許本文可以幫到你。有需要交流的地方,可以通過評論與我們交流。

幾周前我們參加了DockerCon ,Dockercon是以Docker為中心的技術(shù)大會。它面向開發(fā)者以及對在Docker開放平臺上構(gòu)建、交付、運行分布式應(yīng)用感興趣的從業(yè)者,不論這些開放平臺是運行于自用筆記本上或者是數(shù)據(jù)中心的虛擬機上。我們參加了這次大會,F(xiàn)lux7是Docker基礎(chǔ)的系統(tǒng)集成合作伙伴,同時也是演講嘉賓。

我們的CEO Aater Suleman和我們的一位客戶一同進(jìn)行了演講。雖然DockerCon大會十分有趣,但我覺得大會太關(guān)注Docker的具體細(xì)節(jié),而忽略了Docker的使用場景。所以,在這篇文章中,我想介紹并分享一些Docker的實際應(yīng)用案例。

在我們討論Docker的使用場景之前,先來看看Docker這個工具有什么特別的地方吧。

Docker提供了輕量級的虛擬化,它幾乎沒有任何額外開銷,這個特性非???。

首先你在享有Docker帶來的虛擬化能力的時候無需擔(dān)心它帶來的額外開銷。其次,相比于虛擬機,你可以在同一臺機器上創(chuàng)建更多數(shù)量的容器。

Docker的另外一個優(yōu)點是容器的啟動與停止都能在幾秒中內(nèi)完成。Docker公司的創(chuàng)始人 Solomon Hykes曾經(jīng)介紹過Docker在單純的LXC之上做了哪些事情,你可以去看看。

下面是我總結(jié)的一些Docker的使用場景,它為你展示了如何借助Docker的優(yōu)勢,在低開銷的情況下,打造一個一致性的環(huán)境。

簡化配置

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

代碼流水線(Code Pipeline)管理

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

提高開發(fā)效率

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

不同的開發(fā)環(huán)境中,我們都想把兩件事做好。一是我們想讓開發(fā)環(huán)境盡量貼近生產(chǎn)環(huán)境,二是我們想快速搭建開發(fā)環(huán)境。

理想狀態(tài)中,要達(dá)到第一個目標(biāo),我們需要將每一個服務(wù)都跑在獨立的虛擬機中以便監(jiān)控生產(chǎn)環(huán)境中服務(wù)的運行狀態(tài)。然而,我們卻不想每次都需要網(wǎng)絡(luò)連接,每次重新編譯的時候遠(yuǎn)程連接上去特別麻煩。這就是Docker做的特別好的地方,開發(fā)環(huán)境的機器通常內(nèi)存比較小,之前使用虛擬的時候,我們經(jīng)常需要為開發(fā)環(huán)境的機器加內(nèi)存,而現(xiàn)在Docker可以輕易的讓幾十個服務(wù)在Docker中跑起來。

隔離應(yīng)用

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

我們經(jīng)常需要考慮兩點,一是因為要降低成本而進(jìn)行服務(wù)器整合,二是將一個整體式的應(yīng)用拆分成松耦合的單個服務(wù)(譯者注:微服務(wù)架構(gòu))。如果你想了解為什么松耦合的應(yīng)用這么重要,請參考Steve Yege的這篇論文,文中將Google和亞馬遜做了比較。

整合服務(wù)器

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

調(diào)試能力

Docker提供了很多的工具,這些工具不一定只是針對容器,但是卻適用于容器。它們提供了很多的功能,包括可以為容器設(shè)置檢查點、設(shè)置版本和查看兩個容器之間的差別,這些特性可以幫助調(diào)試Bug。你可以在《Docker拯救世界》的文章中找到這一點的例證。

多租戶環(huán)境

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

使用Docker,可以為每一個租戶的應(yīng)用層的多個實例創(chuàng)建隔離的環(huán)境,這不僅簡單而且成本低廉,當(dāng)然這一切得益于Docker環(huán)境的啟動速度和其高效的diff命令。

你可以在這里了解關(guān)于此場景的更多信息。

快速部署

在虛擬機之前,引入新的硬件資源需要消耗幾天的時間。虛擬化技術(shù)(Virtualization)將這個時間縮短到了分鐘級別。而Docker通過為進(jìn)程僅僅創(chuàng)建一個容器而無需啟動一個操作系統(tǒng),再次將這個過程縮短到了秒級。這正是Google和Facebook都看重的特性。

你可以在數(shù)據(jù)中心創(chuàng)建銷毀資源而無需擔(dān)心重新啟動帶來的開銷。通常數(shù)據(jù)中心的資源利用率只有30%,通過使用Docker并進(jìn)行有效的資源分配可以提高資源的利用率。

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

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