docker技術(shù)介紹 一PPT課件
《docker技術(shù)介紹 一PPT課件》由會員分享,可在線閱讀,更多相關(guān)《docker技術(shù)介紹 一PPT課件(86頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、.,1,Docker 技術(shù)介紹(一),信息中心運行維護室畢宏剛,.,2,一、Docker案例介紹 二、Docker概念介紹 三、Docker與虛擬機對比 四、Docker應(yīng)用場景 五、Docker的實用性 六、Docker基本原理 七、Docker基本命令介紹 八、Docker調(diào)度工具介紹 九、Docker最佳實踐,.,3,一、Docker案例介紹,眼見為實2048游戲軟件的搭建,.,4,.,5,ubuntuubuntu:/dockerfile$ sudo docker run -d -p 8016:80 two-eight F85f1d378c3aa3d50a4ae4643ef149f7d6
2、650aa880cf4f3183733427c19333af,ubuntuubuntu:/dockerfile$ sudo docker run -d -p 8017:80 two-eight,ubuntuubuntu:/dockerfile$ sudo docker run -d -p 8018:80 two-eight,ubuntuubuntu:/dockerfile$ sudo docker run -d -p 8019:80 two-eight,操作命令,.,6,實驗結(jié)果,.,7,二、Docker概念介紹,什么是容器? 什么是Docker?,.,8,隨著整個云計算產(chǎn)業(yè)的演進,繼IaaS
3、和SaaS成為風口和出現(xiàn)爆發(fā)式增長后,接下來PaaS即將迎來風口。 在2015年,多家云創(chuàng)業(yè)公司將產(chǎn)品定位轉(zhuǎn)向了場景化PaaS,諸如 即時通訊PaaS云 智能語音PaaS云 物聯(lián)網(wǎng)PaaS云 存儲PaaS云,基于Docker的PaaS平臺,.,9,1960年之前的貨運情況,.,10,通過集裝箱的運貨方式(1960年之后),.,11,.,12,基于Docker的軟件開發(fā)、運維,.,13,Docker基于容器技術(shù)的輕量級虛擬化解決方案 Docker是容器引擎,把Linux的cgroup、namespace等容器底層技術(shù)進行封裝抽象,為用戶提供了創(chuàng)建和管理容器的便捷界面(包括命令行和API) Doc
4、ker 是一個開源項目,誕生于 2013 年初,基于 Google 公司推出的 Go 語言實現(xiàn) 微軟,紅帽Linux,IBM,Oracle等主流IT廠商已經(jīng)在自己的產(chǎn)品里增加對Docker的支持。 Google 每周啟動超過20億個容器進行業(yè)務(wù)服務(wù),于上個世紀90年代已經(jīng)開始大規(guī)模使用容器技術(shù),.,14,Docker主要功能特征,.,15,.,16,docker容器,軟件運行的單元(例如tomcat、mysql軟件),.,17,阿里云平臺,百度云平臺,容器跨云平臺遷移,.,18,容器介紹,Container(容器)技術(shù)其實早在多年前就出現(xiàn)了。從2005年的Solaris Containers到
5、2008年LXC 0.1版本的推出。再到后來的Google推出開源的容器管理工具lmctfy,也將近經(jīng)歷了10年的發(fā)展。它僅僅只是一個虛擬化的技術(shù),相比KVM,XEM沒有太多的優(yōu)勢。 直到2013年,Docker的出現(xiàn)。才代表著容器技術(shù)一個新的時代的來臨。,.,19,從技術(shù)角度看,傳統(tǒng)容器只解決了容器執(zhí)行(run)問題,而Docker定義了一套容器構(gòu)建(build)分發(fā)(ship)執(zhí)行(run),容器 Container,鏡像 images,倉庫 Repositories,執(zhí)行,構(gòu)建,分發(fā),.,20,Client,Docker_host1,Registry(倉庫),Docker run,Doc
6、ker push,Docker pull,Docker engine,容器,鏡像,Docker build,Docker_host2,Docker engine,鏡像,容器,.,21,三、Docker與虛擬機對比,虛擬機和Docker有什么區(qū)別?,.,22,.,23,作為一種輕量級的虛擬化方式,Docker在運行應(yīng)用上跟傳統(tǒng)的虛擬機方式相比具有顯著優(yōu)勢: Docker容器很快,啟動和停止可以在秒級實現(xiàn),這相比傳統(tǒng)的虛擬機方式要快得多。 Docker容器對系統(tǒng)資源需求很少,一臺主機上可以同時運行數(shù)千個Docker容器。 Docker通過類似Git的操作來方便用戶獲取、分發(fā)和更新應(yīng)用鏡像,指令簡明
7、,學習成本較低。,Docker-輕量級虛擬化容器技術(shù),.,24,Docker通過Dockerfile配置文件來支持靈活的自動化創(chuàng)建和部署機制,提高工作效率。 Docker容器除了運行其中的應(yīng)用之外,基本不消耗額外的系統(tǒng)資源,保證應(yīng)用性能的同時,盡量減小系統(tǒng)開銷。傳統(tǒng)虛擬機方式運行N個不同的應(yīng)用就要啟動N個虛擬機(每個虛擬機需要單獨分配獨占的內(nèi)存、磁盤等資源),而Docker只需要啟動N個隔離的容器,并將應(yīng)用放到容器內(nèi)即可。,Docker-輕量級虛擬化容器技術(shù),.,25,特點對比,.,26,以下的數(shù)據(jù)均是在IBM x3650 M4服務(wù)器測得,其主要的硬件參數(shù)是: (1)2顆英特爾xeon E5-
8、2655 處理器,主頻2.4-3.0 GHz。每顆處理器有8個核,因此總共有16個核。 (2)256 GB RAM. 在測試中是通過運算Linpack程序來獲得計算能力數(shù)據(jù)的。結(jié)果如下圖所示:,性能對比,.,27,1.資源隔離方面不如虛擬機,docker是利用cgroup實現(xiàn)資源限制的,只能限制資源消耗的最大值,而不能隔絕其他程序占用自己的資源。 2.安全性問題。docker目前并不能分辨具體執(zhí)行指令的用戶,只要一個用戶擁有執(zhí)行docker的權(quán)限,那么他就可以對docker的容器進行所有操作,不管該容器是否是由該用戶創(chuàng)建。比如A和B都擁有執(zhí)行docker的權(quán)限,由于docker的server端
9、并不會具體判斷docker client是由哪個用戶發(fā)起的,A可以刪除B創(chuàng)建的容器,存在一定的安全風險。 3.docker目前還在版本的快速更新中,細節(jié)功能調(diào)整比較大。一些核心模塊依賴于高版本內(nèi)核,存在版本兼容問題,Docker相對虛擬機不足之處,.,28,有些激進的言論聲稱Docker將是現(xiàn)有虛擬機技術(shù)的終結(jié)者,個人覺得此言論有些浮夸了。Docker是面向應(yīng)用的,其終極目標是構(gòu)建PAAS平臺,而現(xiàn)有虛擬機主要目的是提供一個靈活的計算資源池,是面向架構(gòu)的,其終極目標是構(gòu)建一個IAAS,或者是SDDC(Software Defined Data Center軟件定義的數(shù)據(jù)中心)。 并且,兩者相輔
10、相成。Docker的老東家dotCloud的PAAS服務(wù)便基于Amazon的AWS服務(wù),因此,虛擬機是Docker的土壤,而Docker則向用戶展現(xiàn)了業(yè)務(wù)。,結(jié)論,.,29,四、Docker應(yīng)用場景,Docker怎么用?,.,30,對應(yīng)用進行自動打包和部署(Automating the packaging and deployment of applications),Docker對于應(yīng)用依賴封裝完整,同一鏡像可重復(fù)的在測試、集成、生產(chǎn)等環(huán)境部署,做到“一次構(gòu)建,處處運行”,適用于持續(xù)集成、持續(xù)部署流程。,.,31, 創(chuàng)建輕量、私有的PAAS環(huán)境(Creation of lightweight
11、, private PAAS environments),.,32,自動化測試和持續(xù)整合與部署(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ā)、測試、上線過程,.,33,1、資源利用效率
12、低 2、單物理機多應(yīng)用無法有效隔離(進程空間,cpu資源,磁盤) 3、運維部署不便 4、測試、版本管理復(fù)雜 5、遷移成本高 6、傳統(tǒng)虛擬機,空間占用大,啟動慢,管理復(fù)雜,傳統(tǒng)型軟件開發(fā)、測試、上線過程不足之處,.,34,Docker倉庫群,開發(fā)(本地),獲取鏡像,開發(fā)測試,提交倉庫,測試機(公用),獲取鏡像,驗證測試,生產(chǎn)機集群,獲取鏡像,部署,備份,以Docker為單位的開發(fā)部署流程設(shè)計,.,35,以docker為單位的開發(fā)測試部署流程,簡化了環(huán)境搭建的步驟,提高了資源利用效率和開發(fā)測試部署的速度,降低了遷移的成本 更快速的交付和部署。使用Docker,開發(fā)人員可以使用鏡像來快速構(gòu)建一套標準
13、的開發(fā)環(huán)境;開發(fā)完成之后,測試和運維人員可以直接使用相同環(huán)境來部署代碼。 Docker可以快速創(chuàng)建和刪除容器,實現(xiàn)快速迭代,大量節(jié)約開發(fā)、測試、部署的時間。并且,各個步驟都有明確的配置和操作,整個過程全程可見,使團隊更容易理解應(yīng)用的創(chuàng)建和工作過程。,.,36, 部署和擴展Web應(yīng)用、數(shù)據(jù)庫和后端服務(wù)(Deploying and scaling web apps, databases and backend services) 案例:微博紅包 羊年春晚Docker集群成功的為1.02億用戶刷微博、搶紅包提供了可靠的服務(wù)。 微博平臺Docker集群的規(guī)模情況: Docker集群規(guī)模達到1000+節(jié)
14、點 QPS(每秒查詢率)峰值達到800K/s 4個9的服務(wù)SLA達到150ms 共覆蓋23個核心服務(wù) 春晚共調(diào)度近300節(jié)點完成動態(tài)擴容,.,37,由此可見,Docker的目的是讓用戶用簡單的“集裝箱”方式,快速的部署大量的、標準化的應(yīng)用運行環(huán)境,所以,只要是這類的需求,Docker都比較適合。,結(jié)論,.,38,五、Docker的實用性,成熟度、適用性 Docker能在企業(yè)里面用么?,1、穩(wěn)定性 2、可管理性 3、業(yè)務(wù)高可用和可恢復(fù)能力,.,39,從穩(wěn)定性上看,Docker在2015年6月10日發(fā)布了1.0版本,把該版本稱為一個“里程碑”,并聲稱“1.0的發(fā)布表明在質(zhì)量、功能完整、后臺兼容和
15、API 穩(wěn)定性方面已經(jīng)提升了一個級別,達到企業(yè) IT 標準”。 但在此之前,dotCloud一直警告用戶“不要在生產(chǎn)環(huán)境中運行 Docker ”,在RHEL 7中,Docker的版本為0.11.1,這是1.0發(fā)布前的RC版本,雖然紅帽會將之后的Docker更新和補丁修復(fù)更新到0.11版本中,目前Docker的版本是1.9版本。 但是,企業(yè)客戶在使用這樣一個較新的軟件版本時,仍需承擔不小的穩(wěn)定性風險的。而在很多企業(yè)客戶的軟件版本選擇規(guī)范上,都有“需采用已經(jīng)發(fā)布超過半年的穩(wěn)定版本”的要求。,穩(wěn)定性,.,40,可管理性方面,企業(yè)的IT運維人員需要所使用的軟件具有很好的可視化管理能力,并且具有可行的監(jiān)
16、控手段。 Docker目前的集中化管理主要有DockerUI 、Dockland、Shipyard 等Docker的主要作用是應(yīng)用的發(fā)布和運行,但是,看起來Shipyard在Application的管理上還很粗糙,并且,整個管理思路并不是以應(yīng)用為中心的,這可能會給企業(yè)在集中管理Docker的時候,帶來了一定的“麻煩”。 而監(jiān)控的主要目的是快速了解系統(tǒng)、運行的建康狀況,對風險狀態(tài)進行告警,這方面,Docker較為缺乏,還需要企業(yè)針對相關(guān)環(huán)境進行定制化的監(jiān)控實現(xiàn)。,可管理性,.,41,在企業(yè)中任何一個業(yè)務(wù)都是需要高度可用的,因此,企業(yè)業(yè)務(wù)平臺都要考慮三個事情:本地高可用、數(shù)據(jù)備份、遠程災(zāi)難恢復(fù)。
17、當然,在使用Docker的時候,也許需要從另一個角度考慮問題,在Docker的應(yīng)用場景中,提倡“無狀態(tài)”應(yīng)用,也就是說,業(yè)務(wù)數(shù)據(jù)僅在數(shù)據(jù)層進行存儲,而業(yè)務(wù)層不關(guān)注任何數(shù)據(jù)。業(yè)務(wù)層的高可用就可以通過快速的重新部署來實現(xiàn),數(shù)據(jù)層仍然采用傳統(tǒng)模式,或者借助于傳統(tǒng)的方式實現(xiàn)高可用和可恢復(fù)性。但這需要時間進行方案摸索和驗證,其可行性和可靠性需要時間來去證明。,業(yè)務(wù)高可用和可恢復(fù)性,.,42,綜上所述,Docker到大規(guī)模的企業(yè)環(huán)境應(yīng)用還有不少的路要走,但是,它所帶來的便利性仍然不可小視,這將是革命性的改變,“不足”換種說法就是“機會”,這需要大量了解企業(yè)業(yè)務(wù)的合作伙伴圍繞Docker推出相應(yīng)的解決方案,
18、而Docker的開放性給這種努力帶來了極大的便利性。 而對于企業(yè)來說,Docker對開發(fā)、測試團隊帶來的便利性非常巨大,而開發(fā)、測試環(huán)境對之上所討論到的缺點并不關(guān)注,所以,在開發(fā)、測試團隊大膽的推廣、使用Docker無疑能夠獲得極大的收益。,.,43,六、Docker基本原理,基本概念及基本原理,.,44,基本概念(三大核心),容器 Container,鏡像 images,倉庫 Repositories,執(zhí)行,構(gòu)建,分發(fā),.,45,Docker 的鏡像類似虛擬機的模板,但是更輕量 例如:一個鏡像可以包含一個完整的 Linux 操作系統(tǒng)環(huán)境,里面僅安裝了 Tomcat或用戶需要的其它應(yīng)用程序 鏡
19、像可以用來創(chuàng)建容器,鏡像,.,46,等同于從模板中創(chuàng)建虛擬機 容器是從鏡像創(chuàng)建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。 可以把容器看做是一個簡易版的 Linux 環(huán)境(包括root用戶權(quán)限、進程空間、用戶空間和網(wǎng)絡(luò)空間等)和運行在其中的應(yīng)用程序。,容器,.,47,鏡像 #0 Linux +tomcat,容器 #1 Linux + tomcat,容器 #2 Linux + tomcat,容器 #3 Linux + tomcat,從同一個鏡像啟動多個容器,.,48,容器端口映射,主機,鏡像名稱:image:01 鏡像ID:e7fig83jgf8 Linu
20、x+tomcat,鏡像名稱:image:02 鏡像ID:v8fkfg8gkd Linux+oracle,容器名稱:myapp1 容器ID:44adg8d9mdf,port:8080,port:80,容器名稱:myapp_db 容器ID:35gif8jr9fgnhkf,port:1521,port:1521,容器名稱:myapp2 容器ID:9gjd8jd9gkdh9g,port:8081,port:80,.,49,倉庫是集中存放鏡像文件的場所 倉庫注冊服務(wù)器上往往存放著多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標簽 倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形
21、式 push 鏡像到倉庫,從倉庫pull下鏡像,push,pull,主機,主機,倉庫及倉庫注冊服務(wù)器,.,50,LinuxKernel,.,51,文件系統(tǒng)是如何工作的,Docker鏡像被存儲在一系列的只讀層。當我們開啟一個容器,Docker讀取只讀鏡像并添加一個讀寫層在頂部。如果正在運行的容器修改了現(xiàn)有的文件,該文件將被拷貝出底層的只讀層到最頂層的讀寫層。在讀寫層中的舊版本文件隱藏于該文件之下,但并沒有被不破壞 - 它仍然存在于鏡像以下。當Docker的容器被刪除,然后重新啟動鏡像時,將開啟一個沒有任何更改的新的容器 - 這些更改會丟失。此只讀層及在頂部的讀寫層的組合被Docker稱為 Uni
22、on File System(聯(lián)合文件系統(tǒng))。,.,52,.,53,七、Docker基本命令介紹,Docker怎么操作?,.,54,基本命令,下載image $docker pull image_name 列出鏡像列表; $docker images 在容器中運行echo命令,輸出hello word $ docker run image_name echo hello word“,.,55,列出當前所有正在運行的container $docker ps 利用dockerfile建立新的鏡像 $docker build -t image_name Dockerfile_path 發(fā)布docke
23、r鏡像 $docker push new_image_name,基本命令,.,56,列出當前所有正在運行的container $docker ps 利用dockerfile建立新的鏡像 $docker build -t image_name Dockerfile_path 發(fā)布docker鏡像 $docker push new_image_name,基本命令,.,57,列出當前所有正在運行的container $docker ps 利用dockerfile建立新的鏡像 $docker build -t image_name Dockerfile_path 發(fā)布docker鏡像 $docker
24、push new_image_name,基本命令,.,58,操作案例,1、新建dockerfile文件 2、使用dockerfile創(chuàng)建新鏡像 3、新建新容器 ubuntuubuntu:$ mkdir dockerfile ubuntuubuntu:$ cd dockerfile ubuntuubuntu:/dockerfile$ vi dockerfile,.,59,容器介紹,ubuntuubuntu:$ mkdir dockerfile ubuntuubuntu:$ cd dockerfile ubuntuubuntu:/dockerfile$ vi dockerfile,.,60,FRO
25、M ubuntu:12.04 RUN apt-get update RUN apt-get install -y nginx zip curl RUN echo daemon off; /etc/nginx/nginx.conf RUN curl -o /usr/share/nginx/www/master.zip -L RUN cd /usr/share/nginx/www/ /etc/nginx/nginx.conf - Using cache - dc4b8f42854c,執(zhí)行腳本,.,62,Step 4 : RUN curl -o /usr/share/nginx/www/master
26、.zip -L - Using cache - a73692e9d747 Step 5 : RUN cd /usr/share/nginx/www/ & unzip master.zip & mv 2048-master/* . & rm -rf 2048-master master.zip - Using cache - c454b6cfda95 Step 6 : EXPOSE 80 - Using cache - 90a36ee1a682 Step 7 : CMD /usr/sbin/nginx -c /etc/nginx/nginx.conf - Using cache - ab656c
27、34b790 Successfully built ab656c34b790,.,63,ubuntuubuntu:/dockerfile$ sudo docker run -d -p 8016:80 two-eight F85f1d378c3aa3d50a4ae4643ef149f7d6650aa880cf4f3183733427c19333af,新建容器,.,64,ubuntuubuntu:/dockerfile$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f85f1d378c3a two-eig
28、ht:latest /usr/sbin/nginx -c 12 seconds ago Up 11 seconds 0.0.0.0:8016-80/tcp happy_brattain 083e0b625f1d two-eight:v5 nginx -g daemon of 5 days ago Up 5 days 0.0.0.0:8015-80/tcp hungry_kirch 05f67d439202 two-eight:v4 nginx -g daemon of 5 days ago Up 5 days 0.0.0.0:8014-80/tcp berserk_kirch e22e3622
29、bc03 mytwo:latest /usr/sbin/nginx -c 5 days ago Up 5 days 0.0.0.0:8013-80/tcp adoring_lumiere 372f7bf88fce tomcat7:latest /usr/share/tomcat7/ 7 weeks ago Up 7 weeks 9000/tcp, 0.0.0.0:8120-8080/tcp ecstatic_tesla 46efd96497df mytwo:latest /usr/sbin/nginx -c 11 weeks ago Up 11 weeks 0.0.0.0:8012-80/tc
30、p admiring_hodgkin 4d750597e720 mytwo:latest /usr/sbin/nginx -c 11 weeks ago Up 11 weeks 0.0.0.0:8011-80/tcp goofy_poincare,查看容器,.,65,八、Docker調(diào)度工具介紹,Docker怎么才能用好?,.,66,很多人將Docker等同于Container,其實這是不對的,就像傳統(tǒng)的集裝箱運輸體系一樣,集裝箱只是其中一個最核心的部件。用它來代表整個以集裝箱為核心的運輸體系。那么Docker其實就是以容器為核心的IT交付與運行體系。 它包括了Docker Engine(容器
31、的運行管理) Docker Registry(容器的分發(fā)管理) 以及相關(guān)的一系列的API接口。 包括Docker Machine,Swarm,Compose。 所以可以看做是一套以容器為核心的創(chuàng)建,分發(fā),和運行的標準化體系。,.,67,容器調(diào)度工具的主要任務(wù)就是負責在最合適的主機上啟動容器,并且將它們關(guān)聯(lián)起來。它必須能夠通過自動的故障轉(zhuǎn)移(fail-overs)來處理錯誤,并且當一個實例不足以處理/計算數(shù)據(jù)時,它能夠擴展容器來解決問題。 四個主流容器調(diào)度框架:Docker Swarm、Apache Mesos (running the Marathon framework)and Google
32、 Kubernetes。 CoreOS Fleet,容器調(diào)度簡介,.,68,Docker Swarm是一個由Docker開發(fā)的調(diào)度框架。由Docker自身開發(fā)的好處之一就是標準Docker API的使用。 。,.,69,Kubernetes是一個Docker容器的編排系統(tǒng),它使用label和pod的概念來將容器換分為邏輯單元。Pods是同地協(xié)作(co-located)容器的集合,這些容器被共同部署和調(diào)度,形成了一個服務(wù),這是Kubernetes和其他兩個框架的主要區(qū)別。相比于基于相似度的容器調(diào)度方式(就像Swarm和Mesos),這個方法簡化了對集群的管理。,.,70,.,71,Mesos的目
33、的就是建立一個高效可擴展的系統(tǒng),并且這個系統(tǒng)能夠支持很多各種各樣的框架,不管是現(xiàn)在的還是未來的框架,它都能支持。,.,72,Fleet是一個來自CoreOS的集群管理工具,自詡為低級別的集群引擎,也就意味著,它可支持從基礎(chǔ)層到高層解決方案如Kubernetes。,.,73,1. Swarm的優(yōu)點和缺點都是使用標準的Docker接口,使用簡單,容易集成到現(xiàn)有系統(tǒng),但是更困難支持更復(fù)雜的調(diào)度,比如以定制接口方式定義的調(diào)度。 2.Fleet是低層次且相當簡單的管理指揮層,能作為運行高級別管理工具如Kubernetes 的基礎(chǔ)。 3.Kubernetes 是自成體系的管理工具,有自己的服務(wù)發(fā)現(xiàn)和復(fù)制,
34、需要對現(xiàn)有應(yīng)用的重新設(shè)計,但是能支持失敗冗余和擴展系統(tǒng)。Kubernetes是由谷歌的Borg容器管理工具簡化的開源版本 。,總結(jié)比較,.,74,4.Mesos是低級別 battle-hardened調(diào)度器,支持幾種容器管理框架如Marathon, Kubernetes, and Swarm,現(xiàn)在Kubernetes 和 Mesos穩(wěn)定性超過Swarm,在擴展性方面,Mesos已經(jīng)被證明支持超大規(guī)模的系統(tǒng),比如數(shù)百數(shù)千臺主機,但是,如果你需要小的集群,比如少于一打數(shù)量的節(jié)點服務(wù)器數(shù)量,Mesos也許過于復(fù)雜了。 Mesos則由開源社區(qū)在谷歌公開出的技術(shù)原理上開發(fā)出來,但可以適應(yīng)更大規(guī)模的分布式
35、集群系統(tǒng)。,總結(jié)比較,.,75,九、Docker最佳實踐,Devops介紹,.,76,DevOps(英文Development和Operations的組合) 是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進開發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運營和質(zhì)量保障(QA)部門之間的溝通、協(xié)作與整合。它的出現(xiàn)是由于軟件行業(yè)日益清晰地認識到:為了按時交付軟件產(chǎn)品和服務(wù),開發(fā)和運營工作必須緊密合作。,.,77,需要頻繁交付的企業(yè)可能更需要對DevOps有一個大致的了解。如果一個組織要生產(chǎn)面向多種用戶、具備多樣功能的應(yīng)用程序,其部署周期必然會很短。這種能力也被稱為持續(xù)部署,并且經(jīng)常與精益創(chuàng)業(yè)方法聯(lián)系起來。從2009年起,相
36、關(guān)的工作組、專業(yè)組織和博客快速涌現(xiàn)。,.,78,DevOps的引入能對產(chǎn)品交付、測試、功能開發(fā)和維護(包括曾經(jīng)罕見但如今已屢見不鮮的“熱補丁”)起到意義深遠的影響。在缺乏DevOps能力的組織中,開發(fā)與運營之間存在著信息“鴻溝”例如運營人員要求更好的可靠性和安全性,開發(fā)人員則希望基礎(chǔ)設(shè)施響應(yīng)更快,而業(yè)務(wù)用戶的需求則是更快地將更多的特性發(fā)布給最終用戶使用。這種信息鴻溝就是最常出問題的地方。,.,79,介紹JAVA項目如何通過Docker實現(xiàn)持續(xù)部署(只需簡單四步),全程無需運維人員參與即: 開發(fā)人員通過git push上傳代碼 經(jīng)Git和Jenkins配合 自動完成程序部署 發(fā)布,案例介紹,.,
37、80,其他變通的方案,把代碼放在宿主機上,讓容器通過卷組映射來讀取。這種方法不建議的原因是,將代碼拆分出容器,這違背了Docker的集裝箱原則。從貨運工人角度考慮,整體才是最經(jīng)濟的。這樣,也才能實現(xiàn)真正意義的容器級遷移。 或者說,容器時代,拋棄過去文件分發(fā)的思想。 容器即進程。我們采用上述方案做Docker持續(xù)部署的原因和意義,也在于此。容器的生命周期,應(yīng)該遠遠短于虛擬機,容器出現(xiàn)問題,應(yīng)該是立即殺掉,而不是試圖恢復(fù)。,.,81,GIT作為開源代碼庫以及版本控制系統(tǒng),Github擁有140多萬開發(fā)者用戶。隨著越來越多的應(yīng)用程序轉(zhuǎn)移到了云上,Github已經(jīng)成為了管理軟件開發(fā)以及發(fā)現(xiàn)已有代碼的首
38、選方法。 Jenkins是基于Java開發(fā)的一種繼續(xù)集成(Continuous integration)工具,簡稱CI。 它倡導(dǎo)團隊開發(fā)成員必須經(jīng)常集成他們的工作,甚至每天都可能發(fā)生多次集成。而每次的集成都是通過自動化的構(gòu)建來驗證,包括自動編譯、發(fā)布和測試,從而盡快地發(fā)現(xiàn)集成錯誤,讓團隊能夠更快的開發(fā)內(nèi)聚的軟件。,知識點介紹,.,82,圖示JAVA項目如何通過Docker實現(xiàn)持續(xù)部署即: 開發(fā)人員通過git push上傳代碼,經(jīng)Git和Jenkins配合,自動完成程序部署、發(fā)布,全程無需運維人員參與。,.,83,一個IT系統(tǒng)應(yīng)該包含如下幾個層次: 應(yīng)用程序 運行時平臺(bin/framewor
39、k/lib) 操作系統(tǒng) 硬件(基礎(chǔ)設(shè)施) 開發(fā)人員的主要工作是應(yīng)用程序的編碼、構(gòu)建、測試和發(fā)布,涉及應(yīng)用程序和運行時平臺這兩層。而運維人員的工作則涉及從硬件、操作系統(tǒng)到運行時平臺的安裝、配置、運行監(jiān)控、升級和優(yōu)化等工作。docker提供了一種運行時環(huán)境,隔離了上層應(yīng)用于下層操作系統(tǒng)和硬件的關(guān)聯(lián),使得術(shù)業(yè)有專攻。,開發(fā)和運維的有效隔離,.,84,簡單的東西,永遠是最有生命力的,.,85,Docker是基于Linux 64bit的,無法在32bit的linux/Windows/unix環(huán)境下使用 LXC是基于cgroup等linux kernel功能的,因此container的guest系統(tǒng)只能是linux base的 隔離性相比KVM之類的虛擬化方案還是有些欠缺,所有container公用一部分的運行庫 網(wǎng)絡(luò)管理相對簡單,主要是基于namespace隔離 cgroup的cpu和cpuset提供的cpu功能相比KVM的等虛擬化方案相比難以度量(所以dotcloud主要是按內(nèi)存收費) docker對disk的管理比較有限 container隨著用戶進程的停止而銷毀,container中的log等用戶數(shù)據(jù)不便收集,Docker目前在著以下幾個缺點,.,86,所有的偉大 源于一個勇敢的開始,2016年4月11日,
- 溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。