自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

部署Docker前必須問自己的四個問題

云計算
Docker是當前技術領域最火熱話題了,但是真正應用到生產(chǎn)環(huán)境并取得革命性成功的案例卻并不多。很多人提起這個話題,往往認為Docker不夠穩(wěn)定,坑多,但在在實際的生產(chǎn)實踐過程中,很多用戶反饋Docker本身的穩(wěn)定性不錯,畢竟Docker依賴的容器技術在過去幾年已經(jīng)在大量的企業(yè)生產(chǎn)環(huán)境運行。但是也有相當多的企業(yè)在調研后放棄使用Docker,究竟是什么樣的原因呢?對我們自己來說Docker到底適合我們的項目嗎?且看Pusher的一位工程師的經(jīng)驗總結,希望給我們一些幫助。

2013年4月Docker被正式發(fā)布開源,所以在軟件行業(yè)中Docker還很年輕。像我這樣的網(wǎng)蟲(nerds),對于這么明星耀眼的軟件,首先看到的是它的潛質,并思考如何開始在各種場景下的使用它。

現(xiàn)在很多博主仍在聚焦Docker的優(yōu)勢,而我們感覺到已經(jīng)是時候認真的詢問在什么場景下、為什么這是我們***的選擇方案。而且更重要的是,當你可能在兩者之間做出***抉擇的時候。在慎重思考以下幾點后,我們最終沒有將Docker用于生產(chǎn)環(huán)境。但是,如果你已經(jīng)將Docker用于生產(chǎn),我們也愿意聽一下你的原因。

我將在這篇文章中分享一下我們的一些發(fā)現(xiàn)和一些關鍵問題的概括,如果你也有計劃實施使用Docker,這些問題你應該會遇到的。

我們也希望從你們那里聽到:你認為是什么驅動你采用Docker的?你怎么看待未來工具的變化?你期望它們能做到什么地步?

 [[159855]]

1-你到底需要做多少?

Docker提供功能廣泛,這里有幾個的例子:

Images(鏡像):Docker可以通過Pull和Push命令構建對象到服務中心

Containers(容器):Docker可以通過Start/Stop命令管理容器的生命周期

Logging(日志):Docker可以通過stdout,stderro捕獲輸出所有的容器內(nèi)部信息

Volumes(存儲):Docker可以創(chuàng)建和管理容器的相關文件存儲

Networking(網(wǎng)絡):Docker可以創(chuàng)建管理虛擬的接口和內(nèi)部所有容器之間的網(wǎng)絡橋接

RPC:Docker服務器提供允許外部程序去控制所有容器的行為的API

提供的功能越多必然會增加一定程度的復雜度,據(jù)使用sloccount 統(tǒng)計,僅僅在main repo中就有97100行代碼。它們在Docker中全有或者全部沒有關系。所有的特性被打包到一個二進制的文件中,沒有方法可以實現(xiàn)只打進去一半。所以,如果你準備開始使用Docker,就應該考慮是否需要它提供的這些功能。

2-搞這么復雜值得嗎?

一年前,我們?yōu)榱藢ふ曳椒ê喕瘶嫿ㄟ\行時的管理,開始了Docker跟Jenkins結合使用。開始這個想法后我們不得不開始擔憂構建依賴或同時構建造成的環(huán)境污染等問題。每一次在新容器的構建,Docker將被隔離。這個做法(指隔離Docker的操作,譯者注)在我們僅僅需要Java和Docker而不必處理其它的沖突依賴時簡化了我們的設置。

做了這些工作良好的運行了一段時間后,也引入了不少的問題。管理運行時容器并非是不重要的,我們要清理掉舊的容器會留下的文件目錄,否則可能最終引起機器故障。

為了解決這些問題,我們不得不構建了一個包裝工作(參考cide)來管理Docker容器的每次構建。

當cide構建時,我們也會和Dockerfile構建者關注一些靈活性問題,它不能較好的使用Gemfiles來適應私有庫的依賴管理。僅僅是獲取運行時和清理工作至少要花費三次的不同迭代。

最終新的解決方案要比先前的好。但是我們覺到這些可以更加簡單 ,可以跟工具集更緊密的結合。像所有優(yōu)秀的開發(fā)者一樣,你可以在一個在抽象層尋找一個解決方案,但是它并不是那么***。

3–你能處理故障嗎?

Pusher的例子略微小眾化,因為我們有長期運行的客戶端連接,這些連接有償提供給我們的客戶以便可靠快速的使用。我們必須先限制分發(fā)用戶的數(shù)量。實際上,當我們部署時就已經(jīng)采取額外的步驟去限制故障了(參考crank的實例)。

Docker是按一個月或者兩個月的頻次發(fā)布新的版本,你很可能像通過二進制更新到***版。但是,由于Docker是結構化層次的,要想升級就必須關閉宿主機上的所有的容器。這就必然會增加引入新的故障挑戰(zhàn)。

目前,這是我們放棄在主生產(chǎn)環(huán)境使用Docker***的原因。我們計劃通過替換整個機器環(huán)境,通過重定向轉換DNS流量,但是直到現(xiàn)在我們也沒有解決這個問題。依據(jù)你應用程序的架構,這些經(jīng)驗也可以為提供一些建議。

如果你在此處不太注意,就會發(fā)現(xiàn)自己重建整個應用程序只是為了適應這種模式而已。這也是我們決定放棄使用Docker的另一個原因。我們懷疑它能添加延遲和一些額外的開銷。

4–你有技術支持嗎?

最終還是想想看吧,你需要捫心自問你具有操作知識嗎?我們發(fā)現(xiàn)找到詳細的實例Docker部署信息非常困難。我們遇到的都是一些操作的問題以及如何處理它們。

一旦你深入發(fā)掘Docker的更多操作,你就發(fā)現(xiàn)網(wǎng)上的一點點文檔完全不夠的。所以有兩種方式獲得問題的解答:要么多花費時間思考問題,多去論壇交流刷刷問題,或者你總是能搜索到Docker提供的專門支持問題。

本質上,能搜索的是有很多的基礎入門信息,但是很少量的信息是在***解和可操作性上是可用的。超過現(xiàn)在的水平去理解它是一個長期的實用解決方案這個問題是很難做到的。我們想給正在做出決定的人提供一點力所能及的幫助,這也是我們分享這篇文章其中原因之一。

那么我們應該部署Docker嗎?

***這是一個你自己能回答的問題。根據(jù)你的使用情況,Docker中無所不包的方法是***的。 如果說萬丈高樓平地起,它確實是一個不錯的開端。

但是如果你已經(jīng)有一個已經(jīng)發(fā)布架構,你就應該問一下自己到底是否真的合適了。我們建議先規(guī)劃好你的應用程序藍圖,確認你應該需要什么功能,然后檢測這些功能Docker是否提供。如果你在構建一些很簡單的應用,它可能不是你的理想工具。如果上線的時間是一個障礙,它可能也不是你的理想工具。

對于那些已經(jīng)運行在Docker生產(chǎn)環(huán)境的,我們很樂意想聽你們對于工具的發(fā)現(xiàn)和怎么在社區(qū)交流中得到一個真實的交流從而改善社區(qū)的經(jīng)驗。

責任編輯:何妍 來源: dockone.io
點贊
收藏

51CTO技術棧公眾號