mesos是開源分布式資源管理框架,一個通用資源管理平臺,用于收集各個節(jié)點(diǎn)上的計(jì)算資源然后提供給運(yùn)行在mesos上的應(yīng)用框架來使用;docker是一個開源的應(yīng)用容器引擎,用于創(chuàng)建和管理容器。
本教程操作環(huán)境:linux7.3系統(tǒng)、docker-1.13.1版、Dell G3電腦。
mesos和docker是什么
mesos
Mesos:Mesos是一個通用資源管理平臺,它所管理的核心目標(biāo)對象既不是虛擬機(jī)/物理機(jī),也不是容器,而是各種各樣的計(jì)算資源(CPU、memory、disk、port、GPU等等)。
Mesos會收集各個節(jié)點(diǎn)上的計(jì)算資源然后提供給運(yùn)行在它之上的應(yīng)用框架(比如:Spark、Marathon、甚至是Kubernetes)來使用,應(yīng)用框架可以將收到的計(jì)算資源以自己喜歡的任何方式創(chuàng)建成計(jì)算任務(wù)來完成特定工作(比如:創(chuàng)建一個大數(shù)據(jù)任務(wù)計(jì)算個π什么的)。由于容器技術(shù)近年來的火熱,Mesos也對容器進(jìn)行非常深層次的支持,它內(nèi)部完整地實(shí)現(xiàn)了一個容器運(yùn)行時(類似于Docker),所以,上層的應(yīng)用框架可以方便地把自己的計(jì)算任務(wù)以容器的方式在Mesos管理的計(jì)算集群中運(yùn)行起來。
使用Mesos的門檻相對較高(需要應(yīng)用框架編寫代碼調(diào)用Mesos的API和其集成),但一旦用起來之后靈活性和可擴(kuò)展性更高,因?yàn)镸esos并不限制應(yīng)用框架如何使用計(jì)算資源(可以以容器的方式使用,也可以是其它方式,比如:傳統(tǒng)的進(jìn)程),主動權(quán)完全在應(yīng)用框架自己手中。
作為對比,Kubernetes只能管理容器,所有任務(wù)都必須以容器的方式來運(yùn)行。為了解決門檻較高的問題(當(dāng)然也是為了賺錢),Mesosphere(Mesos這個開源項(xiàng)目背后的商業(yè)公司)推出了DC/OS,其核心就是Mesos加一個內(nèi)置的應(yīng)用框架Marathon(可以用做容器編排),能夠達(dá)到開箱即用的效果,安裝好之后立刻就可以創(chuàng)建和管理容器和非容器類的任務(wù)了。
Mesos 厲害之處在于數(shù)據(jù)中心資源統(tǒng)一管理,可以為多個框架分配資源,但不負(fù)責(zé)調(diào)度,可視為分布式操作系統(tǒng)內(nèi)核,也可以部署在 OpenStack 上,也支持物理資源。如果只用容器,Kubernetes 是不二之選;如果是運(yùn)行的不僅僅是容器化的應(yīng)用,Mesos 配合 Marathon 調(diào)度框架甚至 Kubernetes 都不錯。
Mesos是Apache的頂級開源項(xiàng)目,是最早期的提出二級資源調(diào)度開發(fā)Kernel,通過定制上面的編排工具,可以快速定制一套自家的PaaS解決方案,非常受開發(fā)者喜歡。畢竟在一家公司不做出一點(diǎn)驚天地泣鬼神的業(yè)績,也不好對上級交代。所以,Mesos是制作分布式系統(tǒng)最佳的基礎(chǔ)組件平臺。
docker
Docker 是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的鏡像中。
Docker:這里我假定你指的是Docker engine(也叫做Docker daemon,或最新的名字:Moby),它是一種容器運(yùn)行時(container runtime)的實(shí)現(xiàn),而且是最主流的實(shí)現(xiàn),幾乎就是容器業(yè)界的事實(shí)標(biāo)準(zhǔn)。
Docker是用來創(chuàng)建和管理容器的,它和容器的關(guān)系就好比Hypervisor(比如:KVM)和虛擬機(jī)之間的關(guān)系。
當(dāng)然,Docker公司對Docker engine本身的定位和期望不僅僅在于在單機(jī)上管理容器,所以近年來一直在向Docker engine中加入各種各樣的高級功能,比如:組建多節(jié)點(diǎn)的Docker集群、容器編排、服務(wù)發(fā)現(xiàn),等等。
推薦學(xué)習(xí):《docker視頻教程》