- 論壇徽章:
- 0
|
Docker容器技術(shù)發(fā)展勢頭如此迅猛,以至于很多開發(fā)人員跟不上節(jié)奏,Docker不僅是有史以來人氣最高的開源項目之一,同時也已經(jīng)給人們構(gòu)建應(yīng)用程序的方式帶來了根本性變革。其實docker是基于LXC(Linux Container)容器技術(shù)發(fā)展而來,通過內(nèi)核虛擬化技術(shù)(namespaces及cgroups等)來對容器進行資源隔離,容器運行時相當(dāng)于宿主機上一個進程,沒有額外操作系統(tǒng)開銷,由此帶來docker隔離性、便攜性和輕量性等優(yōu)點。
隨著Kubernetes和相關(guān)管理工具的發(fā)布,docker容器技術(shù)和配套工具越來越完善。早在2014年時候,我們已經(jīng)將docker引入到聯(lián)想企業(yè)云開發(fā)過程中。聯(lián)想企業(yè)云為企業(yè)提供云存儲服務(wù),企業(yè)更重視可靠和穩(wěn)定性,所以經(jīng)過深入研究和大量測試后,才決定將docker應(yīng)用到實際的生產(chǎn)環(huán)境。除了上面提到一些特性外,我們分享在實際開發(fā)過程中docker帶來的好處。
1. 持續(xù)集成,加強開發(fā)、測試迭代能力
傳統(tǒng)開發(fā)測試流程,是通過代碼驅(qū)動的,開發(fā)人員將代碼提交到代碼庫,測試人員從代碼庫拉去代碼,然后去模擬環(huán)境中測試,這種流程能夠使得測試和開發(fā)人員看到同樣的代碼,但是由于環(huán)境變化,配置成為問題,這種效率較低。引入docker之后,我們可以將鏡像驅(qū)動這個開發(fā)和測試過程。如圖所示。
QQ圖片1.png (33.33 KB, 下載次數(shù): 75)
下載附件
2015-08-31 16:36 上傳
在實際開發(fā)過程中,每天開發(fā)人員根據(jù)產(chǎn)品需求和問題,進行開發(fā),然后將開發(fā)后的提交到代碼倉庫中。之后,系統(tǒng)會自動調(diào)用編譯服務(wù),自動編譯代碼倉庫中的代碼,然后將編譯后的程序整合到基礎(chǔ)鏡像中,生成可執(zhí)行鏡像,然后運行可執(zhí)行鏡像進行自動化測試,主要運行系統(tǒng)的測試集,從邏輯和業(yè)務(wù)層面檢測可執(zhí)行鏡像是否合格。驗證通過后,將鏡像推送到鏡像倉庫中,并進行發(fā)布新版本。在測試人員接收新版本通知后,從鏡像倉庫拉取相應(yīng)版本的鏡像,然后在測試進行部署,對特定的功能和問題進行測試,然后將測試結(jié)果反饋給開發(fā)人員。通過這種開發(fā)流程,可以將開發(fā)和測試人員都集中到特定的需求和問題上,增加了版本迭代更新能力,快速推進項目的進度。
2. 隔離環(huán)境差異,方便追蹤調(diào)試
傳統(tǒng)開發(fā)模式中,代碼從開發(fā)人員的環(huán)境到最終在生產(chǎn)環(huán)境上的部署,需要經(jīng)過很多的中間環(huán)境,每一個中間環(huán)境都有自己一些的差別,導(dǎo)致開發(fā)環(huán)境和生成環(huán)境存在很多差別。一旦出現(xiàn)bug,經(jīng)常要耗費大量時間和精力,解決環(huán)境不一致的問題。而使用Docker,開發(fā)環(huán)境和生成環(huán)境都是用相同的鏡像,應(yīng)用就會運行在相同的環(huán)境中,這樣不僅簡化代碼流水線管理,也使得問題追蹤起來非常方便。同時Docker提供了很多的功能,包括可以為容器設(shè)置檢查點、設(shè)置版本和查看兩個容器之間的差別,這些特性可以幫助調(diào)試Bug,快速定位Bug,從而有針對性進行修復(fù)和完善。
3. 快速部署,持續(xù)交付
在虛擬機或者物理機部署分布式系統(tǒng),通常比較耗時,即使是最快的虛擬機也要30秒到1分鐘左右。Docker的虛擬化技術(shù)在創(chuàng)建容器過程,通常秒級時間就可以完成,大大提高部署效率,而且這種方式部署出來的系統(tǒng)還較為可靠。
4. 方便應(yīng)對需求定制和版本升級
聯(lián)想企業(yè)云為企業(yè)用戶提供定制需求服務(wù),每個企業(yè)都會有自己獨立的定制服務(wù),如果使用傳統(tǒng)方式應(yīng)對定制服務(wù),將會耗費大量的時間和精力處理環(huán)境和應(yīng)用程序的版本控制上。而使用docker容器技術(shù)可以輕松應(yīng)對企業(yè)定制需求。因為Docker容器的一個特性就是應(yīng)用程序與數(shù)據(jù)分離,可以保持?jǐn)?shù)據(jù)不變的情況,對應(yīng)用程序進行升級。具體我們在實踐時,首先企業(yè)內(nèi)部的私有鏡像倉庫升級,然后其他各臺機器的鏡像與私有倉庫同步,然后啟動新的容器,就會完成整個分布式系統(tǒng)的升級。通過這種方式,開發(fā)人員不用關(guān)心企業(yè)的網(wǎng)絡(luò)環(huán)境和版本管理,只要關(guān)注定制需求的研發(fā)上,不僅提高了研發(fā)效率,而且增加企業(yè)定制服務(wù)的能力。
現(xiàn)有的管理工具,如kubernate,并不是容易使用,尤其對于中小企業(yè)的運維人員,操作起來較為困難。如果直接使用這些管理工具,一方面不能和我們的產(chǎn)品很好對接,另一方面會影響我們的私有云產(chǎn)品的體驗。于是為了滿足上面需求,結(jié)合聯(lián)想企業(yè)云存儲的特點,我們開發(fā)了一套管理系統(tǒng),主要模塊和功能如圖所示。這套管理系統(tǒng)融合了docker自動化部署、動態(tài)配置、自動化監(jiān)控和報警和動態(tài)擴容等功能,操作起來比較簡單,非常容易使用。開發(fā)人員、測試人員和運維人員都可以很方便使用這套系統(tǒng),我們的企業(yè)客戶用了我們這套管理系統(tǒng),都表示容易上手,再加上能夠?qū)ο到y(tǒng)和容器的監(jiān)控和報警,他們覺得聯(lián)想企業(yè)云存儲產(chǎn)品比較可靠,用起來比較放心。
QQ圖片2.png (32.8 KB, 下載次數(shù): 80)
下載附件
2015-08-31 16:36 上傳
Docker容器技術(shù)輕松解決了開發(fā)環(huán)境和生成環(huán)境不一致的難題,將開發(fā)人員、測試人員和運維人員從繁雜的部署環(huán)境解脫出來,讓他們專注于自己關(guān)注的內(nèi)容上,降低了人力和物力成本,同時提高了工作效率。docker容器發(fā)展至今,相應(yīng)的配套工具和解決方案層出不窮,在具體選取時,不要盲目追求技術(shù)的‘高精尖’,要注意與自己的產(chǎn)品和需求相結(jié)合,容易使用和穩(wěn)定可靠往往更重要,這也是docker能夠迅猛發(fā)展和推廣的一個主要原因。
|
|