來自重慶慧谷科技的蔣勇先生,作為SequoiaDB社區(qū)的“骨灰級(jí)成員”,于最近分享了主題為“Dockerizing SequoiaDB”的技術(shù)專題,分享主要介紹了他們公司如何使用Docker制作國內(nèi)領(lǐng)先的NoSQL數(shù)據(jù)庫SequoiaDB的鏡像的過程,以及有關(guān)Docker和Core OS一些介紹和使用心得,那么筆者就將對(duì)他的演講進(jìn)行歸納總結(jié),順便談一談Docker與分布式數(shù)據(jù)庫結(jié)合的必要性。
技術(shù)新潮流 - Docker
隨著如今開源軟件以及開源項(xiàng)目的熱潮,Docker作為如今在技術(shù)圈非常火爆的一款開源軟件產(chǎn)品,除了開源項(xiàng)目的貢獻(xiàn)非常活躍,目前應(yīng)用也十分的廣泛,包括Redhat在內(nèi)的多個(gè)操作系統(tǒng)都已經(jīng)能支持Docker,而更是無數(shù)的軟件已經(jīng)在使用Docker鏡像進(jìn)行安裝部署。
那么Docker是什么呢?
Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。幾乎沒有性能開銷,可以很容易地在機(jī)器和數(shù)據(jù)中心中運(yùn)行。最重要的是,他們不依賴于任何語言、框架包括系統(tǒng)。
這是對(duì)Docker的一個(gè)官方解釋,簡單說,有兩個(gè)部分:
1) 對(duì)于應(yīng)用程序,曾經(jīng)我們需要為了不同的系統(tǒng)專門的調(diào)整應(yīng)用程序的代碼或者是構(gòu)造相應(yīng)的依賴包驅(qū)動(dòng)等等,大大增加了開發(fā)量以及開發(fā)的難度。現(xiàn)在,Docker向不同的應(yīng)用程序,提供了一個(gè)統(tǒng)一的環(huán)境。
2) 對(duì)于服務(wù)器,為了支持不同版本的應(yīng)用,曾經(jīng)可能需要在物理機(jī)上安裝多個(gè)版本或者不同的GuestOS或者說虛擬機(jī)。這就大大占用了物理機(jī)的性能,影響了最終程序的表現(xiàn),提高了資源的成本。
使用Docker容器的方式,對(duì)于應(yīng)用程序,不需要開發(fā)多種多樣的版本或者是針對(duì)OS每個(gè)版本的升級(jí)再進(jìn)行代碼方面的調(diào)整,實(shí)現(xiàn)了廣泛的兼容性和開發(fā)的最簡性。同時(shí)對(duì)于物理機(jī),部署的環(huán)境“瘦身”也節(jié)約了更多的資源,將更多的資源用于提高應(yīng)用程序本身的性能。
CoreOS是Docker的不二之選?
之前大概介紹了Docker,那么服務(wù)器上面還是需要最基本的應(yīng)操作系統(tǒng)才能支撐Docker容器,那么這么多中的Linux內(nèi)核OS究竟哪一個(gè)好呢?筆者和很多Docker技術(shù)專家的的觀點(diǎn)就是Core OS。
CoreOS是一個(gè)基于Linux 內(nèi)核的輕量級(jí)操作系統(tǒng),為了計(jì)算機(jī)集群的基礎(chǔ)設(shè)施建設(shè)而生,專注于自動(dòng)化,輕松部署,安全,可靠,規(guī)模化。作為一個(gè)操作系統(tǒng),CoreOS 提供了在應(yīng)用容器內(nèi)部署應(yīng)用所需要的基礎(chǔ)功能環(huán)境以及一系列用于服務(wù)發(fā)現(xiàn)和配置共享的內(nèi)建工具。
簡單說,CoreOS去掉了大量的非必要的功能,只保留了Server端需要的最基本功能,真正意義做到了“輕量化”。
此外,CoreOS還做到了:整體系統(tǒng)升級(jí)/回滾方案;容器化所有非系統(tǒng)應(yīng)用、無包管理器;集群化調(diào)度器Fleet;分布式高可靠的KV存儲(chǔ)系統(tǒng)ETCD
這些特性都讓它成為Docker生態(tài)的首選操作系統(tǒng)。不過最新的消息是,CoreOS不滿足于做Docker生態(tài)下的一環(huán),它正在推出自己的容器AppC計(jì)劃,想對(duì)Docker來一招“釜底抽薪”。當(dāng)然,現(xiàn)階段并沒有出現(xiàn)完全的兩者 “分手”,所以對(duì)于普通使用者,并沒有太大影響。