專訪馬全一: Docker正走在成為領(lǐng)域標(biāo)準(zhǔn)的路上
原創(chuàng)憑借其方便的可移植性和開源 Linux 容器引擎,Docker在云計算領(lǐng)域的人氣飆升。其實使用 Linux 容器技術(shù)并不是什么新鮮事,國內(nèi)的各大互聯(lián)網(wǎng)公司內(nèi)部都有基于 Linux 容器引擎的平臺在為業(yè)務(wù)部門提供服務(wù)。一個開源的項目能否在商業(yè)上取得成功,很大程度上依賴三件事 —— 成功的 User Case, 活躍的開放社區(qū)和一個好故事。
最近 CoreOS 開發(fā)了自己的 Linux 容器項目 Rocket,當(dāng)Docker遇到Rocket,這兩款 App Container 的產(chǎn)品到底誰能勝出?51CTO記者專訪Docker中文社區(qū) & docker.cn 創(chuàng)始人之一馬全一老師,看看他預(yù)期中的Docker明天的故事,應(yīng)該會落下怎樣的一筆。
嘉賓簡介:
馬全一, Docker 中文社區(qū)創(chuàng)始人之一,致力于在國內(nèi)推廣 Docker 開源技術(shù)。此前關(guān)注Python、NodeJS,也曾從事過 SAP的 FI/CO顧問等工作。在負(fù)責(zé)游戲后端平臺研發(fā)的過程中了解到Docker技術(shù)后開始潛心鉆研并從事 Docker 社區(qū)的活動。
Docker中文社區(qū)創(chuàng)辦于2013年年底,主要提供 Docker 技術(shù)文章的中文翻譯, DockerCon 視頻字幕的制作,并在國內(nèi)的主要城市組織 Docker Meetup 活動,方便國內(nèi)用戶了解學(xué)習(xí)Docker的相關(guān)技術(shù)和討論交流。
以下為51CTO記者對馬全一老師的專訪錄音整理。
請簡單介紹一下您個人經(jīng)歷,什么時候開始想到創(chuàng)辦Docker中文社區(qū)的?
馬全一:雖然在大學(xué)學(xué)習(xí)的是生物專業(yè),但是畢業(yè)后一直從事研發(fā)的工作。先后做Delphi、Python、Java 和 NodeJS的開發(fā),也從是過 SAP FI/CO 和 ITSM 的顧問。創(chuàng)辦 Docker 中文社區(qū)之前,在一家游戲公司負(fù)責(zé)游戲后端服務(wù)的研發(fā)團隊,當(dāng)時我們在找一個合適用于 mBaaS 的 PaaS云平臺的時候發(fā)現(xiàn)了Docker,我覺得 Docker 能比 PaaS 平臺做更多的事情。從 2013 年底開始,我們就專注于做 Docker 中文社區(qū)。從目前 Docker 的發(fā)展來看,我們的選擇正確的, Docker 是 2013 年到 2014 年最火的開源項目,在云計算領(lǐng)域掀起了 Container 技術(shù)的熱潮。
是什么使Docker如此吸引您,愿意專心鉆研Docker這項技術(shù)?
馬全一:我覺得Docker可以解決開發(fā)者和運維人員非常頭疼的事情,就是應(yīng)用程序的版本管理。做軟件開發(fā)的時候,一個產(chǎn)品要上生產(chǎn)環(huán)境之前,需要從軟件的某個版本的源代碼 Build 構(gòu)建一個應(yīng)用程序部署到生產(chǎn)環(huán)境, 一些配置文件的改動需要通過 DevOps 的工具處理。當(dāng)版本升級時必須重復(fù)上面的過程, Docker 通過使用 Linux 容器和 Union FileSystem 帶來了新的解決方案,Docker 公司把它稱為 ContainerOps。
我個人覺得這是一個新的機會,ContainerOps未來可能是一個革命性的理念。所以才專心研究 Docker 技術(shù),做 Docker 開源技術(shù)的推廣。
Docker中文社區(qū)是什么時候成立的?主要致力于哪方面的工作?
馬全一:是在 2014 年二月份開始創(chuàng)辦 Docker 中文社區(qū),社區(qū)主要是做 Docker開源技術(shù)的推廣,而且針對 Docker Hub 的閉源產(chǎn)品,我們也有寫一個開源的替代產(chǎn)品。我們的目標(biāo)很簡單,就是讓開發(fā)者都了解并且去使用 Docker 。我們覺得一個這樣有革命性的產(chǎn)品,讓大家都去接受和使用它肯定會有一個過程的。開始我們在社區(qū)中組織整理翻譯很多英文的技術(shù)文章,隨后組織一些meetup的活動,特別是在北京、上海、深圳這樣開發(fā)者聚集的城市。開始時了解 Docker 的人很少,Meetup 的活動讓更多人知道 Docker 。深圳的 Meetup 活動在當(dāng)?shù)?OSChina 的協(xié)助下舉辦,有三百余人到場參與,會場的通道都站滿了熱情的開發(fā)者?,F(xiàn)在我們在社區(qū)里組織翻譯一了業(yè)內(nèi)***本 Docker 技術(shù)書籍, 由 James Turnbull 編寫的 《The Docker Book》。 目前中文譯版已經(jīng)上市 《***本 Docker 書》,在各大電商網(wǎng)站都可以找到。
我們做Docker 技術(shù)的研發(fā)和社區(qū),主要是看重 Docker 對 DevOps 帶來的巨大改變,看重的是 ContainerOps 帶來的巨大機會。對于 Container 容器在云計算領(lǐng)域的巨大機會,我認(rèn)為云計算的廠商都會推出支持 Docker 或者 CoreOS 的方案。但是基于 Container 的 ContainerOps 平臺還是空缺,這就是我們要在 2015 年要致力做的事情。
就您了解到的狀況來看,Docker目前的應(yīng)用狀況是怎么樣的?
馬全一:我覺得Docker在國內(nèi)的互聯(lián)網(wǎng)公司已經(jīng)有一些開始嘗試了,但還沒有大規(guī)模的使用。因為 Docker 出來的時間也不長,大家可能知道Docker,看新聞的時候會關(guān)注一下,只是知道它比較火,但具體是什么東西好多概念都混在一起。實際對于整體國內(nèi)的開發(fā)者來講,Docker 其實還是比較陌生的。
對于 Docker 技術(shù)我們也有很多意想不到的地方。 譬如 Docker 和微軟深度合作,這個是大家誰也沒有想到的,我在這個新聞之后困惑了很長時間。Windows 的 Container方案布局已經(jīng)在 Azure 云計算中研發(fā)了一段時間,現(xiàn)在和 Docker 結(jié)合在一起的知,對云計算領(lǐng)域的還是有一定影響的。
Docker其實不是新技術(shù),您覺得是什么原因,讓它取得這么大的成功?
馬全一:我覺得主要有兩個原因。
***個原因是云計算的時代到來。從整個趨勢來講,云計算發(fā)展到這個程度,原來大家對虛擬機的需求比較明確,現(xiàn)在有一些應(yīng)用的場景,傳統(tǒng)的全虛擬化方案并不合適,因為它比較厚重,這時候大家就會想起來一直在用的輕量級虛擬化的解決方案。
Docker 未來可能會成為軟件分發(fā)的事實標(biāo)準(zhǔn),成為系統(tǒng)在不同云計算平臺之間遷移的***方案,這可能為云計算的市場帶來一些沖擊。
第二是 Docker 的 Container 引擎選擇了使用 Union FileSystem的文件系統(tǒng),讓原來的很多文件,變成一層一層的結(jié)構(gòu)。 在改動的時候,只需要把修改的部分增量在文件系統(tǒng)上就可以。LXC 最早的 Linux Container 解決方案,當(dāng)然現(xiàn)在有了和它類似的 LXD 。它們和 Docker 不一樣,Docker 是一種 Application Container 的實現(xiàn),使用了精簡的文件系統(tǒng)為 Application 的運行提供依賴,所以它更適合分發(fā) Application。也許某一天連 Mobile 的 Application 也可以采用這種方式分發(fā)。
Docker不只適用于 Linux,在別的操作系統(tǒng)里,它的性能會有什么差異嗎?
馬全一:這個是沒辦法比較性能差異的。我們可以把Docker看作一個統(tǒng)一的接口,核心是一個 Container Engine 。 那 Windows 的容器是實現(xiàn)了 Docker 的接口定義,所以沒有辦法比較這之間性能的差異。
Docker出來了以后,在開放應(yīng)用的時候,是不是不用再考慮多用戶了?
馬全一:使用 Docker的時候是運行了 Container 內(nèi)的程序,至于這個程序要服務(wù)一個人還是幾個人,是由程序的性質(zhì)來決定,跟Docker沒有關(guān)系。
Docker雖然有很多優(yōu)勢,但畢竟出來的時間不長,肯定還有不成熟的地方,像您剛才說一個是安全、一個是網(wǎng)絡(luò),這可能是它比較明顯的兩個短板。您覺得未來在解決這個問題的時候,有什么辦法?
馬全一:現(xiàn)在很多大公司都對 Docker 進行支持,和 Docker 公司進行了合作。其實從Docker是不是安全,還是要看在什么場景下使用。如果在公司內(nèi)部,那其實不用很擔(dān)心這個問題。 但是 Docker 已經(jīng)受到越來越多的關(guān)注,如果是做為 Container 的公共服務(wù),其實問題還是比較大的。安全還是相對的,但是各大廠商還是在努力的解決這個問題。
Docker 運行起來是很多層,Selinux 可以對每一層做了一個安全的控制,可以實現(xiàn)一個較安全的運行期環(huán)境, 但是因為Selinux本身比較復(fù)雜,能做好這個控制的人不多,至少是一個解決 Docker 安全問題的辦法。
谷歌出了Kubernetes 的項目,它是管理大規(guī)模 Container 的解決方案,后面肯定還會有更多類似的產(chǎn)品出現(xiàn)?,F(xiàn)在 Waeve 這樣的項目就是提供解決網(wǎng)絡(luò)問題,也拿到了融資。
SDN和Docker這兩個結(jié)合在一起,會對Docker有什么幫助嗎?
馬全一:SDN跟Docker結(jié)合在一起的時候,我覺得可能會對Docker在網(wǎng)絡(luò)上的問題有一些幫助。SDN也不能完全解決問題,有些還要靠 Docker 自己,要看它未來的版本在網(wǎng)絡(luò)方面如何改進。
對CoreOS和Docker的分手這件事您怎么看?這對Docker和行業(yè)未來的發(fā)展會帶來什么影響?
馬全一:CoreOS 對 Docker 的發(fā)展是做出了巨大貢獻,按照 CoreOS 官方的說法,他們認(rèn)為 Docker有一些無法避免的缺陷,所以 CoreOS 決定自己推出 Container Runtime。 Rocket 的實現(xiàn)基礎(chǔ)和 Docker 一樣的,都是基于 Linux 的 Namespace 和 Cgroup 特性。
CoreOS 的 Rocket 出來以后,對Docker 的發(fā)展都會是一個促進,代碼會更穩(wěn)定一些,功能會更加完善。目前 Docker 的代碼改動比較快,API 的版本升級比較頻繁。當(dāng)我依賴于 Docker 的代碼或者 API 開發(fā)的時候就比較痛苦。但是它作為一個快速成長的項目,這個過程是必然的。那現(xiàn)在有產(chǎn)品和 Docker 競爭了,這是一個相互促進的事情。
而且我覺得以后很多類似 Rocket 的產(chǎn)品出現(xiàn)和 Docker 競爭。像OpenStack 一樣,國內(nèi)有很多公司都有自己的OpenStack版本,做到***跟主干分支分的太遠(yuǎn),新的特性加不進來,舊的東西又在不停維護。其實我覺得 Docker 和 OpenStack 的代碼量來看,Docker相對來說還是比較簡單的。
您對未來Docker應(yīng)用的展望怎樣?
馬全一:現(xiàn)在我們看到 Docker 商業(yè)的產(chǎn)品是 Docker Hub,Docker Hub以前叫Dcoker Index,在 Docker 1.0 的時候改為 Docker Hub,我覺得 Docker 想做這個領(lǐng)域的Github。如果 Docker 成為應(yīng)用分發(fā)的事實標(biāo)準(zhǔn),成為新的版本管理方案時,它可能成為變成下一代的Github,這可能是一個不一樣的故事。