【不吹不黑】详解容器技术架构、网络和生态
戳藍(lán)字“CSDN云計(jì)算”關(guān)注我們哦!
作者 |??Hardy責(zé)編 | 阿禿
談起容器技術(shù),不得不提Docker技術(shù)。Docker 是PaaS 提供商 DotCloud 開源的一個(gè)高級(jí)容器引擎,源代碼托管在 Github 上,基于Go語言并遵從Apache2.0協(xié)議開源。Docker相當(dāng)于物理行業(yè)的集裝箱對(duì)物流的影響一樣,成為Container上運(yùn)行鏡象的統(tǒng)一打包和交換的標(biāo)準(zhǔn)。
我們知道,Docker使用了容器的環(huán)境隔離和資源限制技術(shù),把鏡像和運(yùn)行環(huán)境打包到Image中。Register支持容器上傳和下載功能。Docker同時(shí)提供了Build,Ship和Run,運(yùn)維只需要在環(huán)境重配置好Docker,剩下的工作就是部署容器,實(shí)現(xiàn)Build Once Run Anywhere和Configure Once Run Anything;從而促進(jìn)了容器技術(shù)的爆發(fā)。
在架構(gòu)上,Docker采用Client Server模式和插件式架構(gòu)設(shè)計(jì),Docker的后端采用非常松耦合的架構(gòu),模塊之間相互獨(dú)立,用戶通過Docker Client與Docker Daemon建立通信,并發(fā)送請(qǐng)求給Docker Daemon。Docker Daemon提供Server功能接受Docker Client的請(qǐng)求;隨后通過Engine執(zhí)行Docker內(nèi)部的一系列工作,每項(xiàng)工作都是以一個(gè)Job的形式的存在。
Docker講底層容器運(yùn)行時(shí)剝離出來,實(shí)現(xiàn)更好的平臺(tái)無關(guān)性。LibContainer是對(duì)各種容器的抽象,發(fā)展為RunC,并貢獻(xiàn)給OCP組織作為定義容器環(huán)境的標(biāo)準(zhǔn)。Docker容器的三大編排工具,Compose、Swarm和Machine。Compose是服務(wù)編排工具,是定義和運(yùn)行Docker主機(jī)上多容器應(yīng)用的工具,通過單獨(dú)文件,定義多容器應(yīng)用并運(yùn)行容器。
Docker的網(wǎng)絡(luò)技術(shù)和能力一直是容器技術(shù)中最難、也是最不看好的技術(shù)之一,Libnetwork是Docker公司正在開發(fā)的新的網(wǎng)絡(luò)底層架構(gòu),由libcontainer和Docker Engine中的網(wǎng)絡(luò)相關(guān)的代碼合并而成。Libnetwork的目標(biāo)是引入了容器網(wǎng)絡(luò)模型(CNM),并為應(yīng)用程序提供一致的編程API接口以及網(wǎng)絡(luò)抽象。Libnetwork的容器網(wǎng)絡(luò)模型包含了三個(gè)重要概念,Network Sandbox,Endpoint和Network。
Weave創(chuàng)建了Networking Plugin技術(shù),目前成熟的有Networking Plugin和Volume Plugin。
Weave方案包含兩大組件,用戶態(tài)Shell腳本和Weave虛擬路由容器。Weave虛擬路由容器需要在每個(gè)宿主機(jī)上布置第三方插件,把不同宿主機(jī)的Route容器連接起來,使得Docker工具生態(tài)無縫集成到Docker。
Weave創(chuàng)建一個(gè)虛擬網(wǎng)絡(luò),鏈接多個(gè)主機(jī)的Docker容器,并使他們可以被自動(dòng)發(fā)現(xiàn),對(duì)使用該網(wǎng)絡(luò)的應(yīng)用來說,所以容器就像是鏈接在同一個(gè)網(wǎng)絡(luò)交換機(jī)上,無需配置端口映射、鏈路等參數(shù)。
容器和容器OS
CoreOS是最為受歡迎的容器虛擬化OS,專為Docker設(shè)計(jì)和內(nèi)核裁剪。CoreOS中有兩個(gè)關(guān)鍵容器集群管理工具,etcd主要實(shí)現(xiàn)集群服務(wù)發(fā)現(xiàn)、信息共享和數(shù)據(jù)同步;而Fleet實(shí)現(xiàn)集群狀態(tài)維護(hù)、容器操作和確保服務(wù)一致可用。
VMware也推出了容器OS系統(tǒng)Photon,在VMware上創(chuàng)建VM,并且安裝Photon系統(tǒng)即可部署運(yùn)行容器,并且支持目前主流的Docker、Rkt和PGC容器平臺(tái)。Photon可以容器管理認(rèn)證工具Lightwave配合,可以實(shí)現(xiàn)更好的權(quán)限管理。
Docker容器和存儲(chǔ)
Docker容器在數(shù)據(jù)讀寫和存儲(chǔ)上,是采用分層和COW的存儲(chǔ)技術(shù)實(shí)現(xiàn),Docker本身的COW文件系統(tǒng)不支持?jǐn)?shù)據(jù)持久保存,在容器被刪除或重啟后,之前的文件更改就會(huì)丟失(變化的數(shù)據(jù)被以COW寫到一個(gè)新的位置)。
Volume的引入雖然解決了數(shù)據(jù)丟失問題,但是當(dāng)容器遷移后,數(shù)據(jù)卷無法跟隨Docker容器一起遷移,ClusterHQ的Flocker的出現(xiàn)恰恰解決Volume的不足,使得數(shù)據(jù)跟隨Docker遷移。
Flocker的容器和存儲(chǔ)卷遷移分為全遷移和增量同步兩個(gè)過程,配置文件描述Docker部署方式和狀態(tài),運(yùn)行配置則生效(遷移Redis);以遷移本地存儲(chǔ)(非共享存儲(chǔ))為例,整個(gè)過程為先打快照,全遷移,增量同步。
Flocker以Docker Volume Plugin的方式部署在Docker中,與Docker集成。目前共享存儲(chǔ)的支持能力比較成熟,支持的產(chǎn)品包括AWS EBS、Scale IO和XtremIO等,并且支持如AWS、Rackspace等云平臺(tái);本地存儲(chǔ)方式在技術(shù)成熟度上并不高。
Flocker通過Storage Driver屏蔽存儲(chǔ)差異,并通過存儲(chǔ)提供的Flocker標(biāo)準(zhǔn)接口實(shí)現(xiàn)對(duì)底層存儲(chǔ)操作,當(dāng)主機(jī)容器在不同主機(jī)間遷移時(shí),Flocker只需要對(duì)容器的Volume進(jìn)行主機(jī)的重映射。
?
Docker與PaaS
隨之容器的發(fā)展,CaaS容器即服務(wù)的概念也應(yīng)時(shí)而生,其大意就是基礎(chǔ)設(shè)施以容器的方式來供給給應(yīng)用使用。以容器為單位成為PaaS的共識(shí),基于Docker的容器打包和分發(fā)有望成為PaaS平臺(tái)的標(biāo)準(zhǔn), Docker將大幅拓寬PaaS的應(yīng)用范圍,并促進(jìn)PaaS的快速發(fā)展。
基于容器的打包一統(tǒng)新一代PaaS,第三代PaaS,DEIS、Flynn等均基于Docker,挑戰(zhàn)老的PaaS平臺(tái)。
PaaS已經(jīng)出現(xiàn)了數(shù)年時(shí)間,第一批是Azure和Heroku等公用云服務(wù),之后出現(xiàn)的Cloud Foundry和OpensShift允許用戶建立自己的PaaS,包括了內(nèi)部數(shù)據(jù)中心以及云環(huán)境。現(xiàn)在,第三代PaaS浪潮正在到來。
?
Flynn是一個(gè)開源的PaaS平臺(tái),可自動(dòng)構(gòu)建部署任何應(yīng)用到Docker容器集群上運(yùn)行,其功能特性與組件設(shè)計(jì)大量參考了傳統(tǒng)的PaaS平臺(tái)Heroku。Flynn目前還不是很穩(wěn)定。但整個(gè)系統(tǒng)非常靈活,相互松耦合,便于任意組件的替換。
Docker與IaaS平臺(tái)
主流IaaS云平臺(tái)都支持Docker的運(yùn)行?(AWS、Google Compute Engine、Rackspace等)。Docker彌合了不同IaaS之間的差異,Docker的輕量和可移動(dòng)性使得其比較適合用在Hybrid Cloud中。降低了IaaS服務(wù)商用戶粘性,使得跨云服務(wù)商遷移更加自由。從而使得IaaS服務(wù)商被管道化。如果Container把安全問題解決了,可能就會(huì)有比較大的變化。
出現(xiàn)基于Docker的Container as a Service或Orchestration as a Service,如Tutum,可以避免IaaS的鎖定,甚至不用關(guān)心是運(yùn)行在物理設(shè)施上,還是運(yùn)行在哪家IaaS平臺(tái)上。
2014年6月Rackspace宣布和CoreOS合作提供Baremetal as a Service方案OnMetal,結(jié)合了云計(jì)算的靈活性和基于container的高性能虛擬化,提供single tenant baremetal cloud serivce。這種模式將影響當(dāng)前以虛擬機(jī)為核心的IaaS平臺(tái),預(yù)計(jì)后續(xù)可能出現(xiàn)同時(shí)提供Docker over Baremetal、 Docker over VM和VM三種混合的資源分配和調(diào)度云平臺(tái)。
Docker也引發(fā)了基于容器的應(yīng)用集群管理平臺(tái),如Kubernetes得到了微軟、紅帽、IBM、Vmware、Docker、Mesosphere、CoreOS和SaltStack等多家廠商的支持。容器集群管理技術(shù)可能導(dǎo)致Openstack邊緣化。
?
Docker與Openstack
從目前來看,Docker集成到OpenStack的方案主要有下面三種方案。主流觀點(diǎn)認(rèn)為基于Nova調(diào)度和管理Docker容器不能發(fā)揮Docker的優(yōu)勢(shì),而把Docker與Heat集成更能發(fā)揮其優(yōu)勢(shì)。
Docker Driver for Nova通過nova-api,docker driver作為hypervisor部署。原理很好理解,nova-computer-api調(diào)用virt api 將nova docker driver作為http agent和docker rest api互通,從而控制docker和與容器的通信。另外,glance作為docker register服務(wù)的本地節(jié)點(diǎn),提供image服務(wù)。這種方式不支持Docker的一些高級(jí)特性。
Docker Plugin for Heat通過Heat組件來實(shí)現(xiàn)。利用heat來管理docker的資源模板,這樣可以避免nova僅僅在hypervisor層面對(duì)docker管理的限制,比如一些docker本身構(gòu)建的能力,或是docker容器之間的網(wǎng)絡(luò)管理等。這種方式能夠充分利用Docker的API,但缺乏quota、 host aggregate 調(diào)度機(jī)制,不能用Glance來管理鏡像。
?
Docker與DevOps
基于Docker可以更好的實(shí)現(xiàn)DevOps。雖然有許多工具適合DevOps部署,使開發(fā)人員和操作更貼近,但Docker是一個(gè)與DevOps原則密切相關(guān)的框架。使用Docker,開發(fā)人員可以專注于他們的代碼,而不必?fù)?dān)心在生產(chǎn)環(huán)境中運(yùn)行它們的負(fù)面影響。
DevOps團(tuán)隊(duì)可以將整個(gè)容器作為容器處理,文件系統(tǒng)和依賴關(guān)系管理的分層方法使得環(huán)境的配置更容易維護(hù)。在相同的源代碼控制系統(tǒng)(如Git工作流程)中版本化和維護(hù)Dockerfiles使得它非常有效地管理多個(gè)開發(fā)/測(cè)試環(huán)境。不同環(huán)境的多個(gè)容器可以在同一VM上運(yùn)行時(shí)被隔離。Docker還可以很好地使用現(xiàn)有的工具,如Jenkins,Chef,Puppet,Ansible,Salt Stack,Nagios和Opsworks。
Docker有可能對(duì)DevOps生態(tài)系統(tǒng)產(chǎn)生重大影響。它可以從根本上改變開發(fā)人員和運(yùn)營專業(yè)人員合作的方式。新興DevOps公司,如CloudMunch,Factor.io,Drone.io可能必須采用Docker并將其帶入他們的CI和CD解決方案。
?
Docker與微服務(wù)架構(gòu)
基于Docker容器和其生態(tài)系統(tǒng)的微服務(wù)架構(gòu)是下一代PaaS的核心,在Docker出現(xiàn)之前,雖然我們談?wù)撐⒎?wù)架構(gòu),但是其實(shí)是很難實(shí)現(xiàn)的。微服務(wù)要運(yùn)行,首先需要一套執(zhí)行的環(huán)境。這套環(huán)境不能對(duì)外部有依賴性。同時(shí),執(zhí)行環(huán)境的粒度又必須足夠的小,這樣才能稱之為”微“,否則必然是對(duì)資源的巨大浪費(fèi)。一個(gè)微服務(wù)可以跑在一臺(tái)虛擬機(jī)上面,但是虛擬機(jī)粒度太大,即使最小的虛擬機(jī),也至少也有1個(gè)核。服務(wù)一個(gè)用戶的服務(wù),顯然用不了一個(gè)核。同時(shí),虛擬機(jī)有沒有一套方便的管理機(jī)制,能夠快速的讓這些服務(wù)之間能夠組合和重構(gòu)。
Docker出現(xiàn)以后,我們看到了微服務(wù)的一個(gè)非常完美的運(yùn)行環(huán)境。一個(gè)容器就是一個(gè)完整的執(zhí)行環(huán)境,不依賴外部任何的東西,具備獨(dú)立性。一臺(tái)物理機(jī)器可以同時(shí)運(yùn)行成百上千個(gè)容器,粒度細(xì)。其計(jì)算粒度足夠的小。容器可以在秒級(jí)進(jìn)行創(chuàng)建和銷毀,非常適合服務(wù)的快速構(gòu)建和重組。數(shù)量眾多的容器編排管理工具,能夠快速的實(shí)現(xiàn)?服務(wù)的組合和調(diào)度。
目前圍繞Docker已形成龐大的生態(tài)系統(tǒng),涵蓋編排/調(diào)度、容器/OS、應(yīng)用部署、網(wǎng)絡(luò)/SDN、Hosting/SP、Big Data、配置管理工具、開發(fā)工具等。
互聯(lián)網(wǎng)廠商/云服務(wù)商加入Docker生態(tài)圈,在容器部署、管理、編排等領(lǐng)域發(fā)力,搶占容器集群管理的標(biāo)準(zhǔn)控制權(quán),積極部署Container和倉儲(chǔ)服務(wù),打造基于各自云服務(wù)的應(yīng)用生態(tài)體系。
Docker將催生云計(jì)算服務(wù)標(biāo)準(zhǔn)化,可以在系統(tǒng)的構(gòu)建者和使用者之間劃出一條清晰的界限,將IT系統(tǒng)的交付標(biāo)準(zhǔn)化。譬如游戲的開發(fā)商可以交付標(biāo)準(zhǔn)化的服務(wù)給游戲的發(fā)行商,發(fā)行商在不依賴開發(fā)商的情況下能夠獨(dú)立運(yùn)營系統(tǒng),或者交由第三方運(yùn)營系統(tǒng)。
Docker Hub為組件/系統(tǒng)提供商建立了一個(gè)部署到Docker 上的生態(tài)、App Market 環(huán)境。個(gè)人應(yīng)用的普及依賴公有倉庫,企業(yè)級(jí)應(yīng)用普及依賴私有倉庫。為私有容器提供安全、高速訪問和多云聯(lián)通。
Docker的挑戰(zhàn)者Rocket
CoreOS 使用 Docker 容器構(gòu)建其服務(wù),并對(duì) Docker 項(xiàng)目做出巨大貢獻(xiàn)。但2014年CoreOS宣布正在開發(fā)自己的容器引擎Rocket ,因?yàn)槠洳煌珼ocker 的發(fā)展方向。CoreOS在 Docker 早期時(shí)候認(rèn)為 Docker 在為開發(fā)人員提供一個(gè)標(biāo)準(zhǔn)的容器架構(gòu),簡(jiǎn)化了開發(fā)人員的日常工作。后來發(fā)現(xiàn) Docker在獲得很多資金后的使命已經(jīng)擴(kuò)張?zhí)?#xff0c;現(xiàn)在不是在談?wù)?Docker 容器,而是 Docker平臺(tái)。
Docker的Roadmap表明旨在想要構(gòu)筑一個(gè)完整的Docker平臺(tái),包括Machine (系統(tǒng)配置)、Swarm (Docker 化應(yīng)用的原生集群)、Compose (多容器應(yīng)用組裝)。
Docker的發(fā)展方向?qū)?duì)Docker的周邊生態(tài)產(chǎn)生復(fù)雜影響,后續(xù)可能面臨更多來自生態(tài)的挑戰(zhàn),關(guān)于Docker詳細(xì)分析,請(qǐng)持續(xù)關(guān)注CSDN云計(jì)算。
???特邀各路大大免費(fèi)入駐CSDN啦,除云計(jì)算相關(guān)書籍免費(fèi)贈(zèng)送外,還有海量福利奧~詳情戳?下方圖片,么么噠~
福利掃描添加小編微信,備注“姓名+公司職位”,入駐【CSDN博客】,加入【云計(jì)算學(xué)習(xí)交流群】,和志同道合的朋友們共同打卡學(xué)習(xí)!
推薦閱讀:
- 【建議收藏】數(shù)據(jù)中心服務(wù)器基礎(chǔ)知識(shí)大全
- 博文強(qiáng)識(shí)|支付寶 App 是如何建設(shè)移動(dòng) DevOps 的?
在辦公室裝警報(bào)、參加楊超越編程大賽——“開發(fā)者之友”聲網(wǎng)Agora團(tuán)隊(duì)是怎樣煉成的?
- 大規(guī)模1.4億中文知識(shí)圖譜數(shù)據(jù),我把它開源了
巨頭垂涎卻不能染指,loT 數(shù)據(jù)庫風(fēng)口已至
“國家隊(duì)”入局! 中移動(dòng)、銀聯(lián)等宣布區(qū)塊鏈服務(wù)網(wǎng)絡(luò)(BSN)正式內(nèi)測(cè)!
總結(jié)
以上是生活随笔為你收集整理的【不吹不黑】详解容器技术架构、网络和生态的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: boost:验证Boost的BOOST_
- 下一篇: 华为愿出售5G技术渴望对手;苹果将向印度