近日,# U.E.D Devops Workshop系列技術(shù)沙龍#在廣州和深圳展開,題為“Docker應(yīng)用與虛擬化技術(shù)”的技術(shù)沙龍為開發(fā)者帶來了Docker技術(shù)的分享?,F(xiàn)場,來自UCloud 平臺開發(fā)中心總監(jiān)邱模炯和DaoCloud CEO Roby分別與技術(shù)愛好者分享了他們在Docker領(lǐng)域的看法與經(jīng)驗。
本文分享來自DaoCloud CEO Roby的“從容器到魂器,云的交付件”的精彩內(nèi)容。
以下為整理內(nèi)容:
說起對于Docker的印象,Roby用的是“刻骨銘心”。他說,在其同事兩分鐘時間敲出一個分布式系統(tǒng)時,其中用到的就是Docker技術(shù),就是這里的容器技術(shù)顛覆了其作為一個容器技術(shù)開發(fā)者對容器的理解——這個故事發(fā)生在2013年,兩年后Roby與幾位同事告別了原來的團隊,一起成立了一家專注容器技術(shù)的公司DaoCloud。
——這就是Roby與Docker的創(chuàng)業(yè)故事
行業(yè)趨勢
Docker的發(fā)展,與云計算技術(shù)一樣是時代催生的變革。1998年,瀑布式應(yīng)用開發(fā)非常流行,開發(fā)者嚴(yán)格遵循預(yù)先計劃的需求、分析、設(shè)計、編碼、測試的步驟順序進行軟件開發(fā),但顯然它的嚴(yán)格分級導(dǎo)致了自由度的降低;2005年,桌面應(yīng)用盛行,它讓電腦更加人性化;隨后敏捷開發(fā)在開發(fā)者中流行起來,因為可以不斷適應(yīng)需求,快速迭代;而云計算技術(shù)帶來的優(yōu)勢和變化讓我們開始追求精益工程,其中對于發(fā)布的要求也更高,推進了容器的發(fā)展,于是我們看到了開發(fā)者對于Docker的狂熱。
是誰驅(qū)動了這一系列的變革?CEO,CTO,工程師,客戶?Roby表示客戶才是最好的產(chǎn)品經(jīng)理。只有聚焦、突破、試錯和迭代才能做到精益,也就是說需要把業(yè)務(wù)分為應(yīng)對變化的部分和積累沉淀部分,以不同迭代粒度推進業(yè)務(wù)發(fā)展。
容器的變遷
容器,我們有時候開玩笑說它很像魂器,如《哈利波特》魂器一樣,它把你的靈魂分開,把將一部分藏在身體外的某個物體中,即使你的身體遭襲擊或者毀壞,當(dāng)你自己受到攻擊的時候,你也死不了,因為還有一部分靈魂在世間未受損害。
一樣的,在制作容器的過程中,就是把你的業(yè)務(wù)分裂開,將一部分藏在變化外的某個部署環(huán)境中,這樣就算你的局部遭變化或者重構(gòu),你的業(yè)務(wù)死不了,因為還有一部分核心在鏡像中不受損害。
這是容器成為迄今發(fā)展速度最快的云計算技術(shù)的原因。我們來看一下容器技術(shù)的變遷:
2008年,我們可以構(gòu)建輕量級的容器;
2013年,容器標(biāo)準(zhǔn)化,實現(xiàn)兼容性;
2014年,容器生態(tài)系統(tǒng)開始繁榮;
2015年,支持多Docker APP模式;
來,構(gòu)建一個平臺實現(xiàn)對容器的管理……
容器技術(shù) VS 虛擬化平臺
容器技術(shù)與虛擬化平臺,不可避免會被技術(shù)人員進行對比。關(guān)鍵的不同主要有以下三個區(qū)別:
虛擬化是一個模擬指令集,而容器,無論是Docker還是Warden都是直接的硬件指令,運行在宿主操作系統(tǒng)之上;
系統(tǒng)資源消耗上,Docker的優(yōu)勢非常明顯,在配置管理上會有一些額外開銷,未來我們相信隨著優(yōu)化開銷會更低。。
容器的鏡像特別的小,因為類似的容器鏡像只要一份就行了,最上面一層是一個可讀寫層,所以每一個容器鏡像在發(fā)布的時候只會發(fā)布一個增量的存儲空間,這使得容器鏡像本身存儲空間非常小。
[page]Docker爆熱的背后
事實上,容器技術(shù)并不是一個新的東西,而Docker只是把容器使用的門檻降到了更低,使得越來越多的開發(fā)者,而不是系統(tǒng)運維開發(fā)人員,也可以使用容器技術(shù),那么Docker為什么會這么熱呢?
站在云的基石上
在移動互聯(lián)網(wǎng)項目中,沒有人再會自己去做基礎(chǔ)架構(gòu)。像UCloud這樣專業(yè)的基礎(chǔ)云服務(wù)提供商的出現(xiàn)使得創(chuàng)業(yè)團隊及企業(yè)高速迭代、創(chuàng)新和運維支撐難度都大大降低了,云計算已經(jīng)成為所有人做業(yè)務(wù)的基石。
降低技術(shù)門檻
其實,這與現(xiàn)在的時代背景有關(guān)系的。因為現(xiàn)在的互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)項目中有很多的痛點,包括微服務(wù)架構(gòu)和容器管理平臺等,都需要我們用一個分布式的架構(gòu)和管理分布式的能力去支撐我們的業(yè)務(wù)體系,原來因為技術(shù)門檻需要一支很強的技術(shù)團隊去支撐業(yè)務(wù)體系,但是Docker的出現(xiàn)使得你實現(xiàn)技術(shù)跨越,降低技術(shù)門檻。
架構(gòu)變遷的需要
大家都在不斷的調(diào)整業(yè)務(wù)架構(gòu),從早期互聯(lián)網(wǎng)的三層架構(gòu),到現(xiàn)在的分層架構(gòu),到未來的微服務(wù)集群架構(gòu),或多或少都在組織內(nèi)會實現(xiàn)這種持續(xù)集成、持續(xù)開發(fā)來保證代碼質(zhì)量和協(xié)同工作。
這些的趨勢變化,已然成為容器發(fā)展的一個契機,因為容器在這個階段上能夠很好的把在這些過程統(tǒng)一起來。
改變開發(fā)流程
組織架構(gòu)在開發(fā)業(yè)務(wù)系統(tǒng),無論是企業(yè)內(nèi)部還是企業(yè)外部其實都無外乎是這樣的一個流程,都是從代碼、測試、集成、發(fā)布、部署到運維這樣的一個過程,但原來的方式中其中一些過程是一個割裂的,也就是說這是人為的把原來應(yīng)該在一條線上的業(yè)務(wù)迭代分隔成了多個階段,這樣就會導(dǎo)致溝通Gap,從而引發(fā)各類問題。
Docker的出現(xiàn)使得軟件開發(fā)周期發(fā)生了變化,整個流程被分成了開發(fā)和交付兩個階段,即交付前和交付后。交付前開發(fā)人員需要迭代和移交鏡像和鏡像構(gòu)建的過程,交付后也有可能是開發(fā)人員本身就是運維團隊負(fù)責(zé)鏡像容器的編排和運行。這樣就讓整個開發(fā)過程做到了統(tǒng)一,容器成為了應(yīng)用交互的一個標(biāo)準(zhǔn)交付件。讓每個過程都是可追溯的。
開發(fā)流程中,除了從代碼開始是一個代碼迭代的東西,從代碼提交到代碼倉庫之后所有的流程就與代碼沒有關(guān)系了,它主要跟容器鏡像有關(guān)系。開發(fā)人員提交代碼的時候是把代碼和鏡像打包在一起發(fā)布成一個應(yīng)用鏡像。革命性在于原來開發(fā)人員是很痛苦的,開發(fā)人員要學(xué)新的東西,新的架構(gòu)、新的打包方式;但容器的話,開發(fā)人員其實不需要學(xué)東西。
因此很多用戶的第一反應(yīng)會是,上容器管理平臺是不是很痛苦,學(xué)習(xí)成本是不是會很高?舉一個例子,我們在上海有一家客戶用了一個非常非常老的中間件技術(shù),我們花了三個小時就幫他把所有組件間全部運行在一個容器基礎(chǔ)教育鏡像下,他的開發(fā)人員、測試人員從此再也不要配發(fā)布環(huán)境了,每次只要把代碼和鏡像進行綁定,代碼進入鏡像,鏡像發(fā)布就可以了,所以從此他的開發(fā)人員和測試人員、運維人員都跑到統(tǒng)一鏡像上面。
所以,使用Docker容器平臺之后開發(fā)流程會是這樣的:所有的工具鏈除了代碼開發(fā)段,用的都是Docker生態(tài)的組件來完成這些工作。從開發(fā)形態(tài)到持續(xù)集成引擎、發(fā)布流程、鏡像發(fā)布、編排、部署環(huán)境、運維,除了代碼階段,之后所有流程都由容器完成的,只是在各個階段用的組件和工具不一樣,最終把這些流程串在一起形成一個自動化發(fā)布流程。
誰在用Docker?
根據(jù)用戶的回訪發(fā)現(xiàn),使用Docker應(yīng)用比較廣泛的兩個領(lǐng)域是互聯(lián)網(wǎng)平臺和移動社交,分別占全部用戶的20%和25%。另外,垂直電商企業(yè)占全部用戶的10%,P2P金融企業(yè)則是15%,物聯(lián)網(wǎng)數(shù)據(jù)企業(yè)占比18%,視頻處理也占到了12%。
從上圖可以看出,容器云平臺的價值所在,主要體現(xiàn)在資源利用率、灰度發(fā)布、運維一體化和彈性伸縮帶來的好處上。
實踐的坑兒……
每個技術(shù)在實踐過程中,總是要經(jīng)歷這樣或那樣的坑兒,實在正常的很,Docker也一樣。目前,最大的坑兒就是網(wǎng)絡(luò)問題。
國內(nèi)網(wǎng)絡(luò)環(huán)境下,自己裝個Docker環(huán)境然后運行,最簡單的也要花上半天的時間,這是相當(dāng)痛苦的一件事,于是我們花了一個星期時間解決了這個痛點,也就是我們的DaoMirror鏡像服務(wù),在中美之間架了一個鏡像服務(wù)器,這個鏡像服務(wù)器其實是完全安全的,因為我們不采取用戶數(shù)據(jù),我們只是把鏡像在中美的節(jié)點之間做了緩存,基本上相當(dāng)于你在美國托Docker鏡像,這樣能夠極大的加速我們的開發(fā)過程。
嘉賓介紹:
Roby Chen(陳齊彥 ),DaoCloud聯(lián)合創(chuàng)始人,曾任EMC中國研究院總架構(gòu)師,Pivotal CloudFoundry云平臺及應(yīng)用實驗室創(chuàng)始人,主導(dǎo)了一系列云計算及大數(shù)據(jù)相關(guān)前瞻技術(shù)開發(fā)工作,作為中國最早的開源云計算技術(shù)布道者,在開源社區(qū)及企業(yè)客戶中享有極高的聲譽。著有《大數(shù)據(jù),戰(zhàn)略技術(shù)實踐》一書。2015年從EMC離職創(chuàng)立DaoCloud,專注于企業(yè)級容器云平臺技術(shù)的構(gòu)建。