服務(wù)項(xiàng)目:網(wǎng)站建設(shè)、仿站、程序開(kāi)發(fā)、APP開(kāi)發(fā)設(shè)計(jì)、移動(dòng)網(wǎng)站開(kāi)發(fā)設(shè)計(jì)、企業(yè)網(wǎng)站設(shè)計(jì)、電子商務(wù)網(wǎng)站開(kāi)發(fā)、網(wǎng)站維護(hù)、網(wǎng)站推廣、UX/UI 、HTML5、CSS3、JS / Jquery ...
四川浚??萍加邢薰?></a></div>
                    <div   id=四川???萍加邢薰? title=
四川浚浚科技有限公司 (開(kāi)發(fā)設(shè)計(jì)官網(wǎng))TEL : 15308000360 / QQ : 38585404

您的位置:首頁(yè) > 技術(shù)經(jīng)驗(yàn) > 網(wǎng)站運(yùn)維 > 正文

漫談Docker-云時(shí)代的程序分發(fā)方式
技術(shù)支持服務(wù)電話:15308000360 【7x24提供運(yùn)維服務(wù),解決各類系統(tǒng)/軟硬件疑難技術(shù)問(wèn)題】

在今年6月份,Docker剛爆出了一個(gè)容器逸出的漏洞注 19。不管是Hypervisor技術(shù)還是容器技術(shù),安全問(wèn)題始終都是一個(gè)不可避免的話題,雖然它們出問(wèn)題的幾率要比中間件軟件(Apache,Nginx、Tomcat)和軟件框架(Struts、Rails)等的概率要小很多。

注 19 http://blog.docker.com/category/security-2/

事后Docker, Inc.還是比較積極的面對(duì)了這件事,除了及時(shí)披露詳細(xì)情況之外,還著重強(qiáng)調(diào)了他們的安全政策。

5.2.5. 有狀態(tài)和無(wú)狀態(tài)容器

在不可變基礎(chǔ)設(shè)施(Immutable Infrastructure)里,一切都可以分為有狀態(tài)(stateful)的和無(wú)狀態(tài)(stateless)的,容器也不例外。容器似乎更適合跑無(wú)狀態(tài)的服務(wù),然而業(yè)內(nèi)對(duì)如何分別對(duì)待這兩種服務(wù)還沒(méi)有太好的最佳實(shí)踐。

5.3. 對(duì)Docker展望

最后再容筆者斗膽對(duì)Docker的將來(lái)做一些展望。除了Docker本身自己會(huì)蓬勃發(fā)展之外,圍繞Docker的生態(tài)圈必將更加成熟和強(qiáng)大。

5.3.1. 集群管理(Orchestration)和服務(wù)發(fā)現(xiàn)(Service Discovery)

相對(duì)于對(duì)單臺(tái)機(jī)器進(jìn)行Provisioning而言,云環(huán)境下則需要對(duì)多臺(tái)機(jī)器進(jìn)行Orchestration。Orchestration這個(gè)詞翻譯過(guò)來(lái)就是編排、編配的意思,我們也可以理解為集群管理。它主要由兩部分工作組成:

  • 監(jiān)控服務(wù)器,發(fā)現(xiàn)變化(軟硬件異常、網(wǎng)絡(luò)異常、正常變更等)
  • 根據(jù)監(jiān)視事件采取相應(yīng)的行動(dòng)。

服務(wù)發(fā)現(xiàn)

在松耦合的分布式環(huán)境下,應(yīng)用程序不一定跑在同一臺(tái)機(jī)上,甚至是跨越數(shù)據(jù)中心的。這時(shí)候服務(wù)發(fā)現(xiàn)就顯得格外重要了。

  • Zookeeper

Chubby注 20可以稱得上是很多服務(wù)發(fā)現(xiàn)、集群管理軟件的鼻祖了,比如Zookeeper注 21,這些軟件都提供數(shù)據(jù)存儲(chǔ)、leader選舉、元數(shù)據(jù)存儲(chǔ)、分布式鎖、事件監(jiān)聽(tīng)(或watch,監(jiān)視)等功能。

注 20 http://research.google.com/archive/chubby.html

注 21 http://zookeeper.apache.org/

  • etcd

etcd注 22很新也很輕量,安裝很簡(jiǎn)單,配置也不復(fù)雜,所以非常適合入門(mén)。etcd存儲(chǔ)的是key-value格式的數(shù)據(jù)。

etcd是CoreOS的一個(gè)組件。同時(shí)CoreOS提供了一個(gè)基于公有云的服務(wù)發(fā)現(xiàn)服務(wù)discovery.etcd.io。

注 22 https://github.com/coreos/etcd

此外,我們還可以有Skydns/Skydock注 23、Discoverd注 24等選擇。

注 23 基于DNS的服務(wù)發(fā)現(xiàn)。https://github.com/crosbymichael/skydock

注 24 Flynn的一個(gè)組件,它目前是基于etcd的,但是也可以擴(kuò)展諸如Zookeeper等分布式存儲(chǔ)機(jī)制。https://github.com/flynn/discoverd

集群管理

圍繞Docker使用場(chǎng)景的開(kāi)源集群管理軟件有很多,比如Geard、Fleet、Consul及Serf等,這些軟件都是隨著Docker應(yīng)運(yùn)而生的;此外還有很多老牌的集群管理軟件,比如Mesos等也可以很好的結(jié)合Docker使用。

  • Serf和Consul

Serf注 25是一個(gè)基于Gossip協(xié)議去中心的服務(wù)器發(fā)現(xiàn)和集群管理工具,它非常輕量,高可用并具備容錯(cuò)機(jī)制。

注 25 http://www.serfdom.io/

Consul注 26是一個(gè)服務(wù)發(fā)現(xiàn)和集群配置共享的軟件,除了K/V store功能之外,它還支持跨數(shù)據(jù)中心及容錯(cuò)功能,并能進(jìn)行服務(wù)健康監(jiān)測(cè)。

注 26 http://www.consul.io/

這兩個(gè)軟件都Vagrant作者所在公司HashiCorp注 27發(fā)布的產(chǎn)品,這個(gè)公司也值得大家關(guān)注。

注 27 http://www.hashicorp.com/products

  • Apache Mesos & Marathon & deimos & etc.

Mesos用于對(duì)多個(gè)節(jié)點(diǎn)的資源進(jìn)行管理,它將多臺(tái)服務(wù)器作為一臺(tái)“虛擬機(jī)”看待,并在這臺(tái)虛擬機(jī)上分配資源,用戶通過(guò)使用framework進(jìn)行資源管理。Marathon是一個(gè)Mesos的framework,用來(lái)啟動(dòng)、管理需要長(zhǎng)時(shí)間運(yùn)行的任務(wù)。deimos則是一個(gè)為Mesos準(zhǔn)備的Docker插件。

其它工具

Cloud Foundry在5月份發(fā)布的Docker版的BOSH工具,有興趣的讀者可以參考一下Decker注 28項(xiàng)目。

注 28 Decker = Docker + Cloud Foundry. http://www.cloudcredo.com/decker-docker-cloud-foundry/

另外Clocker注 29這個(gè)項(xiàng)目也比較有意思,它基于Apache Brooklyn(目前還在孵化器中),能在多云環(huán)境下基于Docker容器進(jìn)行應(yīng)用部署。這個(gè)項(xiàng)目的擴(kuò)展性很好,非常方便自己定制。不過(guò)項(xiàng)目還太年輕,要想使用的話恐怕還需要些時(shí)日。

注 29 https://github.com/brooklyncentral/clocker

5.3.2. 和OS的深度結(jié)合

在Fedora上使用的systemd注 30就已經(jīng)提供了集成容器和虛擬機(jī)的功能。

注 30 systemd是用來(lái)替代Linux中init系統(tǒng)的系統(tǒng)軟件,目前已經(jīng)在Fedora/RHEL等中采用

Docker除了能在各種主流Linux上使用之外,還出現(xiàn)了有專為運(yùn)行Docker容器而定制的OS了,比如CoreOS注 31,RedHat的Atomic注 32。

注 31 https://coreos.com/ ,在6月末剛剛宣布獲得了八百萬(wàn)美元的A輪融資
注 32 http://www.projectatomic.io/

CoreOS

CoreOS是一個(gè)精簡(jiǎn)版的Linux,可以運(yùn)行在既有硬件或者云上,它也是一個(gè)最近備受關(guān)注的項(xiàng)目。CoreOS不提供類似yum或者apt類似的包管理工具,你不需要在CoreOS中安裝軟件,而是讓程序都在Docker容器中去運(yùn)行。CoreOS使用systemd和fleet來(lái)對(duì)容器進(jìn)行管理,通過(guò)etcd進(jìn)行服務(wù)發(fā)現(xiàn)和配置信息共享。

Atomic

Project Atomic是最近才發(fā)布的一個(gè)項(xiàng)目,它也是一個(gè)瘦身版的Linux,只包含systemd/geard注 33/rpm-OSTree以及Docker組件,專門(mén)用來(lái)部署和管理Docker容器。它能在接近硬件裸機(jī)級(jí)別上高性能的運(yùn)行大量容器,而且它還是基于SELinux的,在安全上也有保障。

注 33 http://openshift.github.io/geard/

5.3.3. Container技術(shù)規(guī)范化和兼容性

就在DockerCon14開(kāi)始的前一天,F(xiàn)lynn發(fā)布了Pinkerton,一個(gè)支持在其它容器中使用Docker鏡像的技術(shù)。

而另一方面,我們知道除了LXC,Docker之外,還有很多其它容器技術(shù),比如Zones,jail和LMCTFY等,那么試想這么多的容器之上,是否有統(tǒng)一接口、互相兼容或者在容器上加一層封裝的可能性呢?比如讓一種容器的鏡像,能運(yùn)行到其它容器中?Docker容器已經(jīng)能互相連接了,會(huì)不會(huì)異構(gòu)的容器之間也能進(jìn)行某種交互呢?

6. 總結(jié)

Docker雖然入門(mén)和使用起來(lái)非常簡(jiǎn)單,但整個(gè)生態(tài)系統(tǒng)還是挺龐大的,而且其底層技術(shù)也都很復(fù)雜,由于篇幅有限及筆者學(xué)識(shí)不精,也只能說(shuō)一些皮毛之事,最多只能算是拋塊磚而已;而且筆者也有一種意猶未盡的感覺(jué),但是由于篇幅所限,不能說(shuō)到面面俱到,更多的內(nèi)容,還請(qǐng)各位讀者自己去深入挖掘。

總之筆者認(rèn)為Docker還是非常有趣的一個(gè)東西,值得大家花些時(shí)間體驗(yàn)一下,相信在各位的工作中多多少少都能用的上Docker




上一篇:億級(jí)Web系統(tǒng)搭建—單機(jī)到分布式集群
下一篇:重新思考數(shù)據(jù)中心網(wǎng)絡(luò)

相關(guān)熱詞搜索:docker 分發(fā)方式