版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、一、Docker案例介紹二、Docker概念介紹三、Docker與虛擬機(jī)對比四、Docker應(yīng)用場景五、Docker的實用性六、Docker基本原理七、Docker基本命令介紹八、Docker調(diào)度工具介紹九、Docker最佳實踐一、Docker案例介紹眼見為實2048游戲軟件的搭建ubuntuubuntu:/dockerfile$ sudo docker run -d -p 8016:80 two-eightF85f1d378c3aa3d50a4ae4643ef149f7d6650aa880cf4f3183733427c19333afubuntuubuntu:/dockerfile$ sudo
2、 docker run -d -p 8017:80 two-eightubuntuubuntu:/dockerfile$ sudo docker run -d -p 8018:80 two-eightubuntuubuntu:/dockerfile$ sudo docker run -d -p 8019:80 two-eight操作命令實驗結(jié)果二、Docker概念介紹什么是容器?什么是Docker? 隨著整個云計算產(chǎn)業(yè)的演進(jìn),繼IaaS和SaaS成為風(fēng)口和出現(xiàn)爆發(fā)式增長后,接下來PaaS即將迎來風(fēng)口。在2015年,多家云創(chuàng)業(yè)公司將產(chǎn)品定位轉(zhuǎn)向了場景化PaaS,諸如即時通訊PaaS云智能語音Pa
3、aS云物聯(lián)網(wǎng)PaaS云存儲PaaS云基于Docker的PaaS平臺19601960年之前的貨運情況年之前的貨運情況通過集裝箱的運貨方式(1960年之后)基于Docker的軟件開發(fā)、運維 Docker基于容器技術(shù)的輕量級虛擬化解決方案 Docker是容器引擎,把Linux的cgroup、namespace等容器底層技術(shù)進(jìn)行封裝抽象,為用戶提供了創(chuàng)建和管理容器的便捷界面(包括命令行和API) Docker 是一個開源項目,誕生于 2013 年初,基于 Google 公司推出的 Go 語言實現(xiàn) 微軟,紅帽Linux,IBM,Oracle等主流IT廠商已經(jīng)在自己的產(chǎn)品里增加對Docker的支持。 Go
4、ogle 每周啟動超過20億個容器進(jìn)行業(yè)務(wù)服務(wù),于上個世紀(jì)90年代已經(jīng)開始大規(guī)模使用容器技術(shù)物理容器Docker內(nèi)容無關(guān)性相同的集裝箱可以容納幾乎任何類型的貨物可以封裝任何有效負(fù)載及其依賴項硬件無關(guān)性同一標(biāo)準(zhǔn)的容器允許把貨物從船上運輸?shù)交疖嚒⒖ㄜ嚿?,直到運輸?shù)絺}庫,整個過程無需整理貨物或打開容器使用操作系統(tǒng)基元(例如:LXC)幾乎可以在任何平臺上運行虛擬機(jī)、裸機(jī)、OpenStack、公共IaaS等,并且無需修改內(nèi)容隔離和交互無需擔(dān)心鐵壓在香蕉上,容器可以堆積運輸資源、網(wǎng)絡(luò)和內(nèi)容隔離,避免依賴DockerDocker主要功能特征主要功能特征物理容器Docker自動化標(biāo)準(zhǔn)的接口使其易于實現(xiàn)自動化裝
5、卸、搬運等運行、啟動、停止、提交、搜索等都有標(biāo)準(zhǔn)的操作,非常適合devops:CI、CD、自動擴(kuò)展、混合云高效無需打開或修改,可以在起始兩地快速地移動/運輸輕量級,可以進(jìn)行快速移動和操作職責(zé)分離托運人擔(dān)心盒子內(nèi)部、承運人擔(dān)心盒子外部開發(fā)人員擔(dān)心代碼,運營人員擔(dān)心基礎(chǔ)設(shè)施docker容器,軟件運行的單元(例如tomcat、mysql軟件)阿里云平臺阿里云平臺百度云平臺百度云平臺容器容器跨云平臺遷移跨云平臺遷移容器介紹Container(容器)技術(shù)其實早在多年前就出現(xiàn)了。從2005年的Solaris Containers到2008年LXC 0.1版本的推出。再到后來的Google推出開源的容器管理
6、工具lmctfy,也將近經(jīng)歷了10年的發(fā)展。它僅僅只是一個虛擬化的技術(shù),相比KVM,XEM沒有太多的優(yōu)勢。直到2013年,Docker的出現(xiàn)。才代表著容器技術(shù)一個新的時代的來臨。從技術(shù)角度看,傳統(tǒng)容器只解決了容器執(zhí)行(run)問題,而Docker定義了一套容器構(gòu)建(build)分發(fā)(ship)執(zhí)行(run)容器Container鏡像images倉庫Repositories執(zhí)行構(gòu)建分發(fā)ClientDocker_host1Registry(倉庫)DockerrunDockerpushDockerpullDockerengine容器鏡像DockerbuildDocker_host2Dockereng
7、ine鏡像容器三、Docker與虛擬機(jī)對比虛擬機(jī)和Docker有什么區(qū)別?作為一種輕量級的虛擬化方式,Docker在運行應(yīng)用上跟傳統(tǒng)的虛擬機(jī)方式相比具有顯著優(yōu)勢:Docker容器很快,啟動和停止可以在秒級實現(xiàn),這相比傳統(tǒng)的虛擬機(jī)方式要快得多。Docker容器對系統(tǒng)資源需求很少,一臺主機(jī)上可以同時運行數(shù)千個Docker容器。Docker通過類似Git的操作來方便用戶獲取、分發(fā)和更新應(yīng)用鏡像,指令簡明,學(xué)習(xí)成本較低。Docker-輕量級虛擬化容器技術(shù)Docker通過Dockerfile配置文件來支持靈活的自動化創(chuàng)建和部署機(jī)制,提高工作效率。Docker容器除了運行其中的應(yīng)用之外,基本不消耗額外的系
8、統(tǒng)資源,保證應(yīng)用性能的同時,盡量減小系統(tǒng)開銷。傳統(tǒng)虛擬機(jī)方式運行N個不同的應(yīng)用就要啟動N個虛擬機(jī)(每個虛擬機(jī)需要單獨分配獨占的內(nèi)存、磁盤等資源),而Docker只需要啟動N個隔離的容器,并將應(yīng)用放到容器內(nèi)即可。Docker-輕量級虛擬化容器技術(shù)Docker虛擬機(jī)啟動速度秒級分鐘級復(fù)雜度基于內(nèi)核的namespace技術(shù),對現(xiàn)有基礎(chǔ)設(shè)施的侵入較少部署復(fù)雜度較高,并且很多基礎(chǔ)設(shè)施不兼容執(zhí)行性能在內(nèi)核中實現(xiàn),所以性能幾乎與原生一致對比內(nèi)核級實現(xiàn),性能較差可控性依賴簡單,與進(jìn)程無本質(zhì)區(qū)別依賴復(fù)雜,并且存在跨部門問題體積與業(yè)務(wù)代碼發(fā)布版本大小相當(dāng)MB級別GB級別并發(fā)性可以啟動幾百幾千個容器最多幾十個虛擬機(jī)
9、資源利用率 高低特點對比特點對比以下的數(shù)據(jù)均是在IBM x3650 M4服務(wù)器測得,其主要的硬件參數(shù)是:(1)2顆英特爾xeon E5-2655 處理器,主頻2.4-3.0 GHz。每顆處理器有8個核,因此總共有16個核。(2)256 GB RAM.在測試中是通過運算Linpack程序來獲得計算能力數(shù)據(jù)的。結(jié)果如下圖所示:性能對比1.資源隔離方面不如虛擬機(jī),docker是利用cgroup實現(xiàn)資源限制的,只能限制資源消耗的最大值,而不能隔絕其他程序占用自己的資源。2.安全性問題。docker目前并不能分辨具體執(zhí)行指令的用戶,只要一個用戶擁有執(zhí)行docker的權(quán)限,那么他就可以對docker的容器
10、進(jìn)行所有操作,不管該容器是否是由該用戶創(chuàng)建。比如A和B都擁有執(zhí)行docker的權(quán)限,由于docker的server端并不會具體判斷docker client是由哪個用戶發(fā)起的,A可以刪除B創(chuàng)建的容器,存在一定的安全風(fēng)險。3.docker目前還在版本的快速更新中,細(xì)節(jié)功能調(diào)整比較大。一些核心模塊依賴于高版本內(nèi)核,存在版本兼容問題Docker相對虛擬機(jī)不足之處有些激進(jìn)的言論聲稱Docker將是現(xiàn)有虛擬機(jī)技術(shù)的終結(jié)者,個人覺得此言論有些浮夸了。Docker是面向應(yīng)用的,其終極目標(biāo)是構(gòu)建PAAS平臺,而現(xiàn)有虛擬機(jī)主要目的是提供一個靈活的計算資源池,是面向架構(gòu)的,其終極目標(biāo)是構(gòu)建一個IAAS,或者是SD
11、DC(Software Defined Data Center軟件定義的數(shù)據(jù)中心)。并且,兩者相輔相成。Docker的老東家dotCloud的PAAS服務(wù)便基于Amazon的AWS服務(wù),因此,虛擬機(jī)是Docker的土壤,而Docker則向用戶展現(xiàn)了業(yè)務(wù)。結(jié)論四、Docker應(yīng)用場景Docker怎么用?應(yīng)用場景:應(yīng)用場景:1.1.對應(yīng)用對應(yīng)用進(jìn)行自動進(jìn)行自動打包和部打包和部署署2.2.創(chuàng)建輕創(chuàng)建輕量、私有量、私有的的PAASPAAS環(huán)環(huán)境境3.3.自動化自動化測試和持測試和持續(xù)整合與續(xù)整合與部署部署4.4.部署和部署和擴(kuò)展擴(kuò)展WebWeb應(yīng)應(yīng)用、數(shù)據(jù)用、數(shù)據(jù)庫和后端庫和后端服務(wù)服務(wù)對應(yīng)用進(jìn)行自動
12、打包和部署對應(yīng)用進(jìn)行自動打包和部署(Automating the packaging and (Automating the packaging and deploymentdeployment of applications) of applications)Docker對于應(yīng)用依賴封裝完整,同一鏡像可重復(fù)的在測試、集成、生產(chǎn)等環(huán)境部署,做到“一次構(gòu)建,處處運行”,適用于持續(xù)集成、持續(xù)部署流程。創(chuàng)建輕量、私有的創(chuàng)建輕量、私有的PAAS環(huán)境環(huán)境(Creation of lightweight, private PAAS environments)自動化測試和持續(xù)整合與部署自動化測試和持續(xù)整合與
13、部署(Automated testing and continuous integration/deployment )搭建開發(fā)環(huán)境安裝web容器安裝數(shù)據(jù)庫分配網(wǎng)絡(luò)開發(fā)測試編碼測試安裝web容器安裝數(shù)據(jù)庫分配網(wǎng)絡(luò)上線生產(chǎn)搭建開發(fā)環(huán)境安裝web容器安裝數(shù)據(jù)庫分配網(wǎng)絡(luò)SAP測試環(huán)境安裝SAP系統(tǒng)測試安裝SAP系統(tǒng)生產(chǎn)SAP生產(chǎn)環(huán)境SAP開發(fā)環(huán)境安裝SAP系統(tǒng)開發(fā)共享NFS文件系統(tǒng)版本管理傳輸傳輸傳統(tǒng)型軟件開發(fā)、測試、上線過程1、資源利用效率低2、單物理機(jī)多應(yīng)用無法有效隔離(進(jìn)程空間,cpu資源,磁盤)3、運維部署不便4、測試、版本管理復(fù)雜5、遷移成本高6、傳統(tǒng)虛擬機(jī),空間占用大,啟動慢,管理復(fù)雜傳
14、統(tǒng)型軟件開發(fā)、測試、上線過程不足之處Docker倉庫群開發(fā)(本地)獲取鏡像開發(fā)測試提交倉庫測試機(jī)(公用)獲取鏡像驗證測試生產(chǎn)機(jī)集群獲取鏡像部署備份以Docker為單位的開發(fā)部署流程設(shè)計 以docker為單位的開發(fā)測試部署流程,簡化了環(huán)境搭建的步驟,提高了資源利用效率和開發(fā)測試部署的速度,降低了遷移的成本 更快速的交付和部署。使用Docker,開發(fā)人員可以使用鏡像來快速構(gòu)建一套標(biāo)準(zhǔn)的開發(fā)環(huán)境;開發(fā)完成之后,測試和運維人員可以直接使用相同環(huán)境來部署代碼。 Docker可以快速創(chuàng)建和刪除容器,實現(xiàn)快速迭代,大量節(jié)約開發(fā)、測試、部署的時間。并且,各個步驟都有明確的配置和操作,整個過程全程可見,使團(tuán)隊更
15、容易理解應(yīng)用的創(chuàng)建和工作過程。部署和擴(kuò)展部署和擴(kuò)展Web應(yīng)用、數(shù)據(jù)庫和后端服務(wù)應(yīng)用、數(shù)據(jù)庫和后端服務(wù)(Deploying and scaling web apps, databases and backend services)案例:微博紅包羊年春晚Docker集群成功的為1.02億用戶刷微博、搶紅包提供了可靠的服務(wù)。微博平臺Docker集群的規(guī)模情況:Docker集群規(guī)模達(dá)到1000+節(jié)點 QPS(每秒查詢率)峰值達(dá)到800K/s 4個9的服務(wù)SLA達(dá)到150ms 共覆蓋23個核心服務(wù) 春晚共調(diào)度近300節(jié)點完成動態(tài)擴(kuò)容 由此可見,Docker的目的是讓用戶用簡單的“集裝箱”方式,快速的部署
16、大量的、標(biāo)準(zhǔn)化的應(yīng)用運行環(huán)境,所以,只要是這類的需求,Docker都比較適合。結(jié)論五、Docker的實用性成熟度、適用性Docker能在企業(yè)里面用么?1、穩(wěn)定性2、可管理性3、業(yè)務(wù)高可用和可恢復(fù)能力從穩(wěn)定性上看,Docker在2015年6月10日發(fā)布了1.0版本,把該版本稱為一個“里程碑”,并聲稱“1.0的發(fā)布表明在質(zhì)量、功能完整、后臺兼容和 API 穩(wěn)定性方面已經(jīng)提升了一個級別,達(dá)到企業(yè) IT 標(biāo)準(zhǔn)”。但在此之前,dotCloud一直警告用戶“不要在生產(chǎn)環(huán)境中運行 Docker ”,在RHEL 7中,Docker的版本為0.11.1,這是1.0發(fā)布前的RC版本,雖然紅帽會將之后的Docker
17、更新和補(bǔ)丁修復(fù)更新到0.11版本中,目前Docker的版本是1.9版本。但是,企業(yè)客戶在使用這樣一個較新的軟件版本時,仍需承擔(dān)不小的穩(wěn)定性風(fēng)險的。而在很多企業(yè)客戶的軟件版本選擇規(guī)范上,都有“需采用已經(jīng)發(fā)布超過半年的穩(wěn)定版本”的要求。 穩(wěn)定性可管理性方面,企業(yè)的IT運維人員需要所使用的軟件具有很好的可視化管理能力,并且具有可行的監(jiān)控手段。Docker目前的集中化管理主要有DockerUI 、Dockland、Shipyard 等Docker的主要作用是應(yīng)用的發(fā)布和運行,但是,看起來Shipyard在Application的管理上還很粗糙,并且,整個管理思路并不是以應(yīng)用為中心的,這可能會給企業(yè)在集
18、中管理Docker的時候,帶來了一定的“麻煩”。而監(jiān)控的主要目的是快速了解系統(tǒng)、運行的建康狀況,對風(fēng)險狀態(tài)進(jìn)行告警,這方面,Docker較為缺乏,還需要企業(yè)針對相關(guān)環(huán)境進(jìn)行定制化的監(jiān)控實現(xiàn)。 可管理性在企業(yè)中任何一個業(yè)務(wù)都是需要高度可用的,因此,企業(yè)業(yè)務(wù)平臺都要考慮三個事情:本地高可用、數(shù)據(jù)備份、遠(yuǎn)程災(zāi)難恢復(fù)。當(dāng)然,在使用Docker的時候,也許需要從另一個角度考慮問題,在Docker的應(yīng)用場景中,提倡“無狀態(tài)”應(yīng)用,也就是說,業(yè)務(wù)數(shù)據(jù)僅在數(shù)據(jù)層進(jìn)行存儲,而業(yè)務(wù)層不關(guān)注任何數(shù)據(jù)。業(yè)務(wù)層的高可用就可以通過快速的重新部署來實現(xiàn),數(shù)據(jù)層仍然采用傳統(tǒng)模式,或者借助于傳統(tǒng)的方式實現(xiàn)高可用和可恢復(fù)性。但這
19、需要時間進(jìn)行方案摸索和驗證,其可行性和可靠性需要時間來去證明。業(yè)務(wù)高可用和可恢復(fù)性綜上所述,Docker到大規(guī)模的企業(yè)環(huán)境應(yīng)用還有不少的路要走,但是,它所帶來的便利性仍然不可小視,這將是革命性的改變,“不足”換種說法就是“機(jī)會”,這需要大量了解企業(yè)業(yè)務(wù)的合作伙伴圍繞Docker推出相應(yīng)的解決方案,而Docker的開放性給這種努力帶來了極大的便利性。而對于企業(yè)來說,Docker對開發(fā)、測試團(tuán)隊帶來的便利性非常巨大,而開發(fā)、測試環(huán)境對之上所討論到的缺點并不關(guān)注,所以,在開發(fā)、測試團(tuán)隊大膽的推廣、使用Docker無疑能夠獲得極大的收益。六、Docker基本原理基本概念及基本原理基本概念(三大核心)容
20、器Container鏡像images倉庫Repositoriesdocker Hub(public registry)Docker-registry(private registry)執(zhí)行構(gòu)建分發(fā) Docker 的鏡像類似虛擬機(jī)的模板,但是更輕量 例如:一個鏡像可以包含一個完整的 Linux 操作系統(tǒng)環(huán)境,里面僅安裝了 Tomcat或用戶需要的其它應(yīng)用程序 鏡像可以用來創(chuàng)建容器鏡像 等同于從模板中創(chuàng)建虛擬機(jī) 容器是從鏡像創(chuàng)建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。 可以把容器看做是一個簡易版的 Linux 環(huán)境(包括root用戶權(quán)限、進(jìn)程空間、用戶空
21、間和網(wǎng)絡(luò)空間等)和運行在其中的應(yīng)用程序。容器鏡像#0Linux+tomcat容器#1Linux+tomcat容器#2Linux+tomcat容器#3Linux+tomcat從同一個鏡像啟動多個容器容器端口映射主機(jī)鏡像名稱:image:01鏡像ID:e7fig83jgf8Linux+tomcat鏡像名稱:image:02鏡像ID:v8fkfg8gkdLinux+oracle容器名稱:myapp1容器ID:44adg8d9mdfport:8080port:80容器名稱:myapp_db容器ID:35gif8jr9fgnhkfport:1521port:1521容器名稱:myapp2容器ID:9gj
22、d8jd9gkdh9gport:8081port:80 倉庫是集中存放鏡像文件的場所 倉庫注冊服務(wù)器上往往存放著多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標(biāo)簽 倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式 push 鏡像到倉庫,從倉庫pull下鏡像pushpushpullpull主機(jī)主機(jī)主機(jī)主機(jī)倉庫及倉庫注冊服務(wù)器pid - 進(jìn)程net - 網(wǎng)絡(luò)ipc - 消息mnt - 文件系統(tǒng)uts - 分時user - 用戶容器容器NamespaceNamespace資源隔離資源隔離LinuxKernelrootnamespaceinitpid=1initpid=2b
23、ashpid=3bashpid=4Xnamespaceinitpid=1bashpid=2文件系統(tǒng)是如何工作的 Docker鏡像被存儲在一系列的只讀層。當(dāng)我們開啟一個容器,Docker讀取只讀鏡像并添加一個讀寫層在頂部。如果正在運行的容器修改了現(xiàn)有的文件,該文件將被拷貝出底層的只讀層到最頂層的讀寫層。在讀寫層中的舊版本文件隱藏于該文件之下,但并沒有被不破壞 - 它仍然存在于鏡像以下。當(dāng)Docker的容器被刪除,然后重新啟動鏡像時,將開啟一個沒有任何更改的新的容器 - 這些更改會丟失。此只讀層及在頂部的讀寫層的組合被Docker稱為Union File System(聯(lián)合文件系統(tǒng))。Docker
24、鏡像位于bootfs之上每一層鏡像的下面一層稱為其父鏡像(父子關(guān)系)第一層鏡像為Base Image容器在最頂層其下的所有層都為readonlyDocker將readonly的FS層稱作 imageDocker AUFS特性特性七、Docker基本命令介紹Docker怎么操作?基本命令下載image$dockerpullimage_name列出鏡像列表;$dockerimages在容器中運行echo命令,輸出hello word$dockerrunimage_nameechohelloword“列出當(dāng)前所有正在運行的container$dockerps利用dockerfile建立新的鏡像$do
25、ckerbuild-timage_nameDockerfile_path發(fā)布docker鏡像$dockerpushnew_image_name基本命令列出當(dāng)前所有正在運行的container$dockerps利用dockerfile建立新的鏡像$dockerbuild-timage_nameDockerfile_path發(fā)布docker鏡像$dockerpushnew_image_name基本命令列出當(dāng)前所有正在運行的container$dockerps利用dockerfile建立新的鏡像$dockerbuild-timage_nameDockerfile_path發(fā)布docker鏡像$doc
26、kerpushnew_image_name基本命令操作案例1、新建dockerfile文件2、使用dockerfile創(chuàng)建新鏡像3、新建新容器ubuntuubuntu:$mkdirdockerfileubuntuubuntu:$cddockerfileubuntuubuntu:/dockerfile$vidockerfile容器介紹ubuntuubuntu:$mkdirdockerfileubuntuubuntu:$cddockerfileubuntuubuntu:/dockerfile$vidockerfileFROMubuntu:12.04RUNapt-getupdateRUNapt-ge
27、tinstall-ynginxzipcurlRUNechodaemonoff;/etc/nginx/nginx.confRUNcurl-o/usr/share/nginx/www/master.zip-Lhttps:/ sudo docker build -t two-eight .Sending build context to Docker daemon 2.048 kBSending build context to Docker daemon Step 0 : FROM ubuntu:12.04 - 5c97af892079Step 1 : RUN apt-get update - U
28、sing cache - c327c23fca5cStep 2 : RUN apt-get install -y nginx zip curl - Using cache - 672d58dcb0a3Step 3 : RUN echo daemon off; /etc/nginx/nginx.conf - Using cache - dc4b8f42854c執(zhí)行腳本Step 4 : RUN curl -o /usr/share/nginx/www/master.zip -L https:/ - Using cache - a73692e9d747Step 5 : RUN cd /usr/sha
29、re/nginx/www/ & unzip master.zip & mv 2048-master/* . & rm -rf 2048-master master.zip - Using cache - c454b6cfda95Step 6 : EXPOSE 80 - Using cache - 90a36ee1a682Step 7 : CMD /usr/sbin/nginx -c /etc/nginx/nginx.conf - Using cache - ab656c34b790Successfully built ab656c34b790ubuntuubuntu:/dockerfile$
30、sudo docker run -d -p 8016:80 two-eightF85f1d378c3aa3d50a4ae4643ef149f7d6650aa880cf4f3183733427c19333af新建容器ubuntuubuntu:/dockerfile$ sudo docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESf85f1d378c3a two-eight:latest /usr/sbin/nginx -c 12 seconds ago Up 11 seconds :8016-80/tcp ha
31、ppy_brattain 083e0b625f1d two-eight:v5 nginx -g daemon of 5 days ago Up 5 days :8015-80/tcp hungry_kirch 05f67d439202 two-eight:v4 nginx -g daemon of 5 days ago Up 5 days :8014-80/tcp berserk_kirch e22e3622bc03 mytwo:latest /usr/sbin/nginx -c 5 days ago Up 5 days :8013-80/tcp ad
32、oring_lumiere 372f7bf88fce tomcat7:latest /usr/share/tomcat7/ 7 weeks ago Up 7 weeks 9000/tcp, :8120-8080/tcp ecstatic_tesla 46efd96497df mytwo:latest /usr/sbin/nginx -c 11 weeks ago Up 11 weeks :8012-80/tcp admiring_hodgkin 4d750597e720 mytwo:latest /usr/sbin/nginx -c 11 weeks ago Up
33、11 weeks :8011-80/tcp goofy_poincare 查看容器八、Docker調(diào)度工具介紹Docker怎么才能用好?很多人將Docker等同于Container,其實這是不對的,就像傳統(tǒng)的集裝箱運輸體系一樣,集裝箱只是其中一個最核心的部件。用它來代表整個以集裝箱為核心的運輸體系。那么Docker其實就是以容器為核心的IT交付與運行體系。它包括了Docker Engine(容器的運行管理)Docker Registry(容器的分發(fā)管理)以及相關(guān)的一系列的API接口。包括Docker Machine,Swarm,Compose。 所以可以看做是一套以容器為核心的創(chuàng)
34、建,分發(fā),和運行的標(biāo)準(zhǔn)化體系。容器調(diào)度工具的主要任務(wù)就是負(fù)責(zé)在最合適的主機(jī)上啟動容器,并且將它們關(guān)聯(lián)起來。它必須能夠通過自動的故障轉(zhuǎn)移(fail-overs)來處理錯誤,并且當(dāng)一個實例不足以處理/計算數(shù)據(jù)時,它能夠擴(kuò)展容器來解決問題。四個主流容器調(diào)度框架:Docker Swarm、Apache Mesos (running the Marathon framework)and Google Kubernetes。CoreOS Fleet容器調(diào)度簡介Docker Swarm是一個由Docker開發(fā)的調(diào)度框架。由Docker自身開發(fā)的好處之一就是標(biāo)準(zhǔn)Docker API的使用。Kubernetes
35、是一個Docker容器的編排系統(tǒng),它使用label和pod的概念來將容器換分為邏輯單元。Pods是同地協(xié)作(co-located)容器的集合,這些容器被共同部署和調(diào)度,形成了一個服務(wù),這是Kubernetes和其他兩個框架的主要區(qū)別。相比于基于相似度的容器調(diào)度方式(就像Swarm和Mesos),這個方法簡化了對集群的管理。Mesos的目的就是建立一個高效可擴(kuò)展的系統(tǒng),并且這個系統(tǒng)能夠支持很多各種各樣的框架,不管是現(xiàn)在的還是未來的框架,它都能支持。Fleet是一個來自CoreOS的集群管理工具,自詡為低級別的集群引擎,也就意味著,它可支持從基礎(chǔ)層到高層解決方案如Kubernetes。1. Swa
36、rm的優(yōu)點和缺點都是使用標(biāo)準(zhǔn)的Docker接口,使用簡單,容易集成到現(xiàn)有系統(tǒng),但是更困難支持更復(fù)雜的調(diào)度,比如以定制接口方式定義的調(diào)度。2.Fleet是低層次且相當(dāng)簡單的管理指揮層,能作為運行高級別管理工具如Kubernetes 的基礎(chǔ)。3.Kubernetes 是自成體系的管理工具,有自己的服務(wù)發(fā)現(xiàn)和復(fù)制,需要對現(xiàn)有應(yīng)用的重新設(shè)計,但是能支持失敗冗余和擴(kuò)展系統(tǒng)。Kubernetes是由谷歌的Borg容器管理工具簡化的開源版本 ??偨Y(jié)比較4.Mesos是低級別 battle-hardened調(diào)度器,支持幾種容器管理框架如Marathon, Kubernetes, and Swarm,現(xiàn)在Kub
37、ernetes 和 Mesos穩(wěn)定性超過Swarm,在擴(kuò)展性方面,Mesos已經(jīng)被證明支持超大規(guī)模的系統(tǒng),比如數(shù)百數(shù)千臺主機(jī),但是,如果你需要小的集群,比如少于一打數(shù)量的節(jié)點服務(wù)器數(shù)量,Mesos也許過于復(fù)雜了。Mesos則由開源社區(qū)在谷歌公開出的技術(shù)原理上開發(fā)出來,但可以適應(yīng)更大規(guī)模的分布式集群系統(tǒng)??偨Y(jié)比較九、Docker最佳實踐Devops介紹DevOps(英文Development和Operations的組合)是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進(jìn)開發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運營和質(zhì)量保障(QA)部門之間的溝通、協(xié)作與整合。它的出現(xiàn)是由于軟件行業(yè)日益清晰地認(rèn)識到:為了按時交付軟件產(chǎn)
38、品和服務(wù),開發(fā)和運營工作必須緊密合作。需要頻繁交付的企業(yè)可能更需要對DevOps有一個大致的了解。如果一個組織要生產(chǎn)面向多種用戶、具備多樣功能的應(yīng)用程序,其部署周期必然會很短。這種能力也被稱為持續(xù)部署,并且經(jīng)常與精益創(chuàng)業(yè)方法聯(lián)系起來。從2009年起,相關(guān)的工作組、專業(yè)組織和博客快速涌現(xiàn)。DevOps的引入能對產(chǎn)品交付、測試、功能開發(fā)和維護(hù)(包括曾經(jīng)罕見但如今已屢見不鮮的“熱補(bǔ)丁”)起到意義深遠(yuǎn)的影響。在缺乏DevOps能力的組織中,開發(fā)與運營之間存在著信息“鴻溝”例如運營人員要求更好的可靠性和安全性,開發(fā)人員則希望基礎(chǔ)設(shè)施響應(yīng)更快,而業(yè)務(wù)用戶的需求則是更快地將更多的特性發(fā)布給最終用戶使用。這種信息鴻溝就是最常出問題的地方。介紹JAVA項目如何通過Docker實現(xiàn)持續(xù)部署(只需簡單四步),全程無需運維人員參與全程無需運維人員參與即:開發(fā)人員通過開發(fā)人員通過git pushgit push上傳代碼上傳代碼經(jīng)經(jīng)GitGit和和JenkinsJenkins配合配合自動完成程序部署自動完成程序部署發(fā)布發(fā)布案例介紹其他變通的方案
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 套牌車出售合同范例
- 酒店年終發(fā)言稿
- 辦公室的綠色革命
- 公司增加股東合同范例
- 回收人防工程合同范例
- 工地破碎機(jī)租賃合同范例
- 如何培養(yǎng)員工責(zé)任感課件
- 婚禮堂服務(wù)合同范例
- 醫(yī)療保健材器創(chuàng)新演繹
- cnc機(jī)器租賃合同范例
- (完整版)汽油發(fā)電機(jī)操作規(guī)程
- 大平礦副井2.25m過卷緩沖裝置安裝2課件
- 門窗工程項目特征描述情況
- 胸外心臟按壓術(shù)操作常見并發(fā)癥的預(yù)防
- 工程造價咨詢服務(wù)質(zhì)量承諾及保證措施
- 最新種植新病歷
- 水聯(lián)動試車方案(共33頁)
- 高效電池片(TOPCon)生產(chǎn)項目可行性研究報告模板-提供甲乙丙資質(zhì)資信
- INPLAN操作培訓(xùn)PPT課件
- VB和Oracle的鏈接
- 代理報關(guān)委托書
評論
0/150
提交評論