華為梁辰曄:OCI容器標(biāo)準(zhǔn)的社區(qū)演進(jìn)和OCI方案的實戰(zhàn)
原創(chuàng)【51CTO.com原創(chuàng)稿件】2017年12月01日-02日,由51CTO主辦的WOTD全球軟件開發(fā)技術(shù)峰會將在深圳中州萬豪酒店隆重舉行。本次峰會以軟件開發(fā)為主題,數(shù)十位專家級嘉賓將帶來多場精彩的技術(shù)內(nèi)容分享。屆時,華為主任工程師梁辰曄將在微服務(wù)與容器技術(shù)分會場與來賓分享"OCI容器標(biāo)準(zhǔn)的社區(qū)演進(jìn)和OCI方案的實戰(zhàn)"的主題演講,為大家詳細(xì)闡述容器標(biāo)準(zhǔn)的目前發(fā)展?fàn)顩r及如何打造一套完整的OCI社區(qū)方案。51CTO誠邀您蒞臨大會,與我們共享技術(shù)帶來的喜悅。
51CTO記者對即將參加大會演講的梁辰曄老師進(jìn)行了專訪,讓我們先睹為快,探聽一下他是解讀OCI方案實戰(zhàn)的。
OCI 1.0已經(jīng)發(fā)布
2015年,由Docker、IBM、微軟、紅帽及Google等廠商所組成的OCI聯(lián)盟成立,并于2016年4月推出了***個開放容器標(biāo)準(zhǔn)。除推出OCI Runtime標(biāo)準(zhǔn),讓開發(fā)者打包、部署應(yīng)用程序,并可以自由選用不同的容器Runtime外,還推出開放容器OCI鏡像標(biāo)準(zhǔn),由容器技術(shù)社區(qū)制定規(guī)范,確立容器鏡像建立、認(rèn)證、部署以及命名的方式。今年早些時候,***個標(biāo)準(zhǔn)OCI 1.0版終于正式出爐,此標(biāo)準(zhǔn)也意味容器離標(biāo)準(zhǔn)化更近一步。
時至今日,OCI容器標(biāo)準(zhǔn)發(fā)展如何了?梁辰曄老師詳細(xì)做了介紹。
runtime標(biāo)準(zhǔn)已經(jīng)發(fā)布了1.0版本,相對比較成熟,當(dāng)前的主流容器引擎包括runc, rkt, runv等都能兼容runtime標(biāo)準(zhǔn)。image 標(biāo)準(zhǔn)也已經(jīng)發(fā)布了1.0版本,但是這個標(biāo)準(zhǔn)僅限于格式標(biāo)準(zhǔn)。OCI Image格式和Docker的鏡像格式非常相似(因為OCI Image格式完全借鑒Docker的鏡像格式),包括一個完整的分層技術(shù)和描述文件。
目前,OCI社區(qū)提供工具來驗證 “某個runtime是否符合runtime標(biāo)準(zhǔn)”, 也提供工具來驗證“某個image是否符合image標(biāo)準(zhǔn)”。
對 runtime的驗證,是用每個標(biāo)準(zhǔn)項的預(yù)期的結(jié)果和實際的結(jié)果進(jìn)行對比,如果全部一致,證明符合標(biāo)準(zhǔn),反之則會報錯。例如,要驗證一個程序執(zhí)行過程中的環(huán)境變量是否和設(shè)定的一致,那么只要把運行中的環(huán)境變量和配置里的環(huán)境變量進(jìn)行對比即可。對image的驗證,是判斷某個image的各層、各配置項是否符合OCI含義,如果有不合規(guī)的配置,那么說明這個鏡像 “非OCI標(biāo)準(zhǔn)”。
OCI路標(biāo)
存在不可忽視的缺陷
容器標(biāo)準(zhǔn)的發(fā)展歷史尚短,目前主要存在兩個缺陷:
1. 鏡像發(fā)現(xiàn)獲取機(jī)制的欠缺, 這也是和主流的Docker/rkt的***差距
鏡像標(biāo)準(zhǔn)制定了鏡像的格式,但是“從哪獲取鏡像,如何獲取”,都是問題。這就限制了OCI鏡像的流行,因為用戶或開發(fā)者根本找不到一個可用的鏡像。針對于此,社區(qū)的做法是從Docker里面獲取一個Docker鏡像,然后轉(zhuǎn)化成OCI鏡像。但很明顯,這個根本無法商業(yè)化。
這也可以說明Docker為什么流行,就是Docker的鏡像應(yīng)用比較豐富,鏡像的制作和發(fā)布很方便。OCI沒有了鏡像的分發(fā)機(jī)制,就只能是一個理論上的產(chǎn)物。
2. 無法覆蓋更多的場景
容器方案千差萬別,OCI社區(qū)無法預(yù)知到一個能夠符合所有場景的標(biāo)準(zhǔn)。比如 runV,也有一些選項是OCI無法滿足的。
梁辰曄老師表示,目前容器標(biāo)準(zhǔn)能夠相安無事還是因為社區(qū)里面Docker一家獨大,未來容器標(biāo)準(zhǔn)能否覆蓋更多的方案還未知,那個時候才是真正考驗“標(biāo)準(zhǔn)”社區(qū)的時候。
打造完整的OCI社區(qū)方案
說到如何打造一套完整的OCI社區(qū)方案,目前可以參考的還是 Docker方案。
Docker里包括:1. Hub:負(fù)責(zé)鏡像的托管。 2. Build:負(fù)責(zé)鏡像的制作。 3. Dockerfile :鏡像制作的配置文件。4. Docker pull/push:負(fù)責(zé)鏡像的傳輸 5. Image:本地管理,把獲取的鏡像在本地理起來。 6. Docker run:負(fù)責(zé)鏡像的運行。其中,4~6都是Docker命令來完成。
這里的 1~5,其實都與鏡像相關(guān),只有6與runtime相關(guān)。因此可以看到,一個完整的 OCI方案,需要有大量的鏡像相關(guān)的操作。而這些都是OCI里沒有的,也是未來OCI社區(qū)要做的事情。
梁辰曄老師將在WOTD現(xiàn)場,用當(dāng)前的開源項目為原型演示一個完整的OCI方案。
OCI的架構(gòu)圖
向“商業(yè)成熟”努力
目前,OCI按照先易后難的原則聚焦運行時和鏡像格式的標(biāo)準(zhǔn)化,1.0標(biāo)準(zhǔn)發(fā)布之后,OCI的標(biāo)準(zhǔn)范圍會逐漸擴(kuò)大到鏡像發(fā)現(xiàn)機(jī)制、鏡像獲取機(jī)制等內(nèi)容,引入新的項目。未來OCI社區(qū)的方案肯定會越來越“商業(yè)成熟”,那個時候才能真正體現(xiàn)OCI的價值。
對于PaaS云開發(fā)、部署和運維人員來說,到時就可以不用特別擔(dān)心集成的runtime和選用的鏡像是否有兼容問題,只要符合OCI標(biāo)準(zhǔn)就能無縫的“獲取”和“運行”。
【講師簡介】
梁辰曄,華為主任工程師,從事容器相關(guān)的開發(fā)以及社區(qū)組織工作?,F(xiàn)為Linux/OCI社區(qū)maintainer,華為容器OS社區(qū)(EulerOS iSula)的負(fù)責(zé)人。擁有10多年的社區(qū)布道、社區(qū)開發(fā)和商業(yè)產(chǎn)品的交付經(jīng)驗。先后活躍于GNOME社區(qū)、openSUSE社區(qū),對開源開發(fā)、開源到商業(yè)的轉(zhuǎn)換有深刻的理解。
使用雙十一特別優(yōu)惠碼[B310BD20D337F914] 立減200元,和我一起去WOTD全球軟件開發(fā)技術(shù)峰會!詳情點擊wot.51cto.com
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】