《虛擬化技術(shù)與應(yīng)用》 課件 19-容器虛擬化基礎(chǔ);20-Doer方案_第1頁(yè)
《虛擬化技術(shù)與應(yīng)用》 課件 19-容器虛擬化基礎(chǔ);20-Doer方案_第2頁(yè)
《虛擬化技術(shù)與應(yīng)用》 課件 19-容器虛擬化基礎(chǔ);20-Doer方案_第3頁(yè)
《虛擬化技術(shù)與應(yīng)用》 課件 19-容器虛擬化基礎(chǔ);20-Doer方案_第4頁(yè)
《虛擬化技術(shù)與應(yīng)用》 課件 19-容器虛擬化基礎(chǔ);20-Doer方案_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

容器虛擬化基礎(chǔ)了解容器技術(shù)熟悉虛擬機(jī)與容器的區(qū)別了解容器的發(fā)展歷史教學(xué)目標(biāo)目錄容器技術(shù)概述虛擬機(jī)與容器容器發(fā)展歷史開(kāi)發(fā)場(chǎng)景思考思考:

假定有開(kāi)發(fā)人員正在開(kāi)發(fā)一個(gè)WEB應(yīng)用,開(kāi)發(fā)人員使用的是一臺(tái)筆記本電腦而且開(kāi)發(fā)環(huán)境具有特定的配置。其他開(kāi)發(fā)人員身處的環(huán)境配置也各有不同。開(kāi)發(fā)人員在開(kāi)發(fā)的應(yīng)用依賴于當(dāng)前的配置且還要依賴于某些配置文件。如果我們希望盡可能多在本地模擬這些環(huán)境而不產(chǎn)生重新創(chuàng)建服務(wù)器環(huán)境的開(kāi)銷。請(qǐng)問(wèn)?

我們要如何確保應(yīng)用能夠在這些環(huán)境中運(yùn)行和通過(guò)質(zhì)量檢測(cè)?并且在部署過(guò)程中不出現(xiàn)令人頭疼的版本、配置問(wèn)題,也無(wú)需重新編寫(xiě)代碼和進(jìn)行故障修復(fù)?開(kāi)發(fā)場(chǎng)景思考-容器解決方案?jìng)鹘y(tǒng)理解:

容器是存放東西的工具現(xiàn)代計(jì)算機(jī)技術(shù):

容器技術(shù)就是將應(yīng)用程序打包到每一個(gè)單獨(dú)的容器之中,通過(guò)這個(gè)封裝過(guò)程,將每個(gè)應(yīng)用程序進(jìn)行隔離,打斷了應(yīng)用程序之間的依賴和連接關(guān)系。容器概述Docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows操作系統(tǒng)的機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。什么是容器?Docker理念Docker的主要目標(biāo)是“Build,ShipandRunAnyApp,Anywhere”,也就是通過(guò)對(duì)應(yīng)用組件的封裝、分發(fā)、部署、運(yùn)行等生命周期的管理,使用戶的APP(可以是一個(gè)WEB應(yīng)用或數(shù)據(jù)庫(kù)應(yīng)用等等)及其運(yùn)行環(huán)境能夠做到“一次鏡像,處處運(yùn)行”。目錄容器技術(shù)概述虛擬機(jī)與容器容器發(fā)展歷史虛擬機(jī)技術(shù)虛擬機(jī)(virtualmachine)就是帶環(huán)境安裝的一種解決方案。它可以在一種操作系統(tǒng)里面運(yùn)行另一種操作系統(tǒng),比如在Windows10系統(tǒng)里面運(yùn)行Linux系統(tǒng)CentOS7。應(yīng)用程序?qū)Υ撕翢o(wú)感知,因?yàn)樘摂M機(jī)看上去跟真實(shí)系統(tǒng)一模一樣,而對(duì)于底層系統(tǒng)來(lái)說(shuō),虛擬機(jī)就是一個(gè)普通文件,不需要了就刪掉,對(duì)其他部分毫無(wú)影響。這類虛擬機(jī)完美的運(yùn)行了另一套系統(tǒng),能夠使應(yīng)用程序,操作系統(tǒng)和硬件三者之間的邏輯不變。

基礎(chǔ)設(shè)施(個(gè)人電腦,服務(wù)器)Hypersior虛擬機(jī)管理系統(tǒng)(如VitualBox)GuestOSAPPVM1GuestOSAPPVM1虛擬機(jī)技術(shù)虛擬機(jī)的缺點(diǎn)缺點(diǎn)資源占用多啟動(dòng)速度慢主機(jī)利用率低容器技術(shù)Linux容器(LinuxContainers,縮寫(xiě)為L(zhǎng)XC)Linux容器是與系統(tǒng)其他部分隔離開(kāi)的一系列進(jìn)程,從另一個(gè)鏡像運(yùn)行,并由該鏡像提供支持進(jìn)程所需的全部文件。容器提供的鏡像包含了應(yīng)用的所有依賴項(xiàng),因而在從開(kāi)發(fā)到測(cè)試再到生產(chǎn)的整個(gè)過(guò)程中,它都具有可移植性和一致性。Linux容器不是模擬一個(gè)完整的操作系統(tǒng)而是對(duì)進(jìn)程進(jìn)行隔離。有了容器,就可以將軟件運(yùn)行所需的所有資源打包到一個(gè)隔離的容器中。容器與虛擬機(jī)不同,不需要捆綁一整套操作系統(tǒng),只需要軟件工作所需的庫(kù)資源和設(shè)置。系統(tǒng)因此而變得高效輕量并保證部署在任何環(huán)境中的軟件都能始終如一地運(yùn)行。容器技術(shù)基礎(chǔ)設(shè)施(個(gè)人電腦,服務(wù)器)主機(jī)操作系統(tǒng)(如Linux/Windows)dockerAPPAPPAPPAPPAPPDocker容器是在操作系統(tǒng)層面上實(shí)現(xiàn)虛擬化,直接復(fù)用本地操作系統(tǒng),而傳統(tǒng)虛擬機(jī)則是在硬件層面上實(shí)現(xiàn)虛擬化,與傳統(tǒng)虛擬機(jī)相比,Docker優(yōu)勢(shì)為啟動(dòng)速度快、占用體積小。虛擬機(jī)VS容器技術(shù)1.傳統(tǒng)虛擬機(jī)技術(shù)是虛擬出一套硬件后,在其上運(yùn)行一個(gè)完整操作系統(tǒng),在該系統(tǒng)上再運(yùn)行所需應(yīng)用進(jìn)程;2.容器內(nèi)的應(yīng)用進(jìn)程直接運(yùn)行于宿主的內(nèi)核,容器內(nèi)沒(méi)有自己的內(nèi)核且也沒(méi)有進(jìn)行硬件虛擬。因此容器要比傳統(tǒng)虛擬機(jī)更為輕便。3.每個(gè)容器之間互相隔離,每個(gè)容器有自己的文件系統(tǒng),容器之間進(jìn)程不會(huì)相互影響,能區(qū)分計(jì)算資源。虛擬機(jī)VS容器技術(shù)虛擬機(jī)技術(shù)容器技術(shù)磁盤(pán)占用情況非常大,甚至上GB很小,甚至幾十KB啟動(dòng)速度很慢,常常需要幾分鐘很快,一般只需要幾秒鐘運(yùn)行形態(tài)運(yùn)行在Hypervisor上直接運(yùn)行于宿主機(jī)的內(nèi)核上,不同容器共享一個(gè)Linux內(nèi)核并發(fā)性最多幾十個(gè)虛擬機(jī)可以同時(shí)啟動(dòng)成百上千個(gè)容器性能比宿主機(jī)差接近于宿主機(jī)的本地進(jìn)程資源利用率低高目錄容器技術(shù)概述虛擬機(jī)與容器容器發(fā)展歷史1979200620082013dotcloud公司推出dockerLXC一個(gè)完整的容器管理工具進(jìn)程資源的使用限制

changeroot技術(shù)的引進(jìn)開(kāi)啟了進(jìn)程隔離大門(mén)至今使用廣泛,潛力無(wú)限容器歷史幾個(gè)重要的容器歷史節(jié)點(diǎn)總結(jié)了解容器技術(shù)掌握容器與虛擬機(jī)的區(qū)別了解容器的發(fā)展歷史Docker方案容器基礎(chǔ)描述典型容器方案完成容器的基礎(chǔ)實(shí)驗(yàn)教學(xué)目標(biāo)Docker概述Docker方案目錄Docker是什么使用最廣泛的開(kāi)源容器引擎一種操作系統(tǒng)級(jí)的虛擬化技術(shù)依賴于Linux內(nèi)核特性:Namespace(資源隔離)和Cgroups(資源限制)一個(gè)簡(jiǎn)單的應(yīng)用程序打包工具Docker設(shè)計(jì)目標(biāo)提供簡(jiǎn)單的應(yīng)用程序打包工具開(kāi)發(fā)人員和運(yùn)維人員職責(zé)邏輯分離多環(huán)境保持一致性Docker簡(jiǎn)介Docker引擎的歷程Docker基本組成實(shí)驗(yàn)?zāi)繕?biāo)請(qǐng)完成Docker主機(jī)的安裝請(qǐng)完成Docker服務(wù)的啟動(dòng)和開(kāi)機(jī)啟動(dòng)等基本配置查看Docker服務(wù)狀態(tài)實(shí)驗(yàn):Docker主機(jī)的安裝應(yīng)用程序打包和發(fā)布應(yīng)用程序隔離持續(xù)集成部署微服務(wù)快速搭建測(cè)試環(huán)境提供PaaS產(chǎn)品(平臺(tái)即服務(wù))Docker應(yīng)用場(chǎng)景Docker概述Docker方案目錄首先需要先從鏡像倉(cāng)庫(kù)服務(wù)中拉取鏡像。常見(jiàn)的鏡像倉(cāng)庫(kù)服務(wù)是DockerHub,但是也存在其他鏡像倉(cāng)庫(kù)服務(wù)。拉取操作會(huì)將鏡像下載到本地Docker主機(jī),可以使用該鏡像啟動(dòng)一個(gè)或者多個(gè)容器。鏡像由多個(gè)層組成,每層疊加之后,從外部看來(lái)就如一個(gè)獨(dú)立的對(duì)象。鏡像內(nèi)部是一個(gè)精簡(jiǎn)的操作系統(tǒng)(OS),同時(shí)還包含應(yīng)用運(yùn)行所必須的文件和依賴包。因?yàn)槿萜鞯脑O(shè)計(jì)初衷就是快速和小巧,所以鏡像通常都比較小。容器和鏡像鏡像通常比較小容器目的就是運(yùn)行應(yīng)用或者服務(wù),這意味著容器的鏡像中必須包含應(yīng)用/服務(wù)運(yùn)行所必需的操作系統(tǒng)和應(yīng)用文件。但是,容器又追求快速和小巧,這意味著構(gòu)建鏡像的時(shí)候通常需要裁剪掉不必要的部分,保持較小的體積。例如,Docker鏡像通常不會(huì)包含6個(gè)不同的Shell讓讀者選擇——通常Docker鏡像中只有一個(gè)精簡(jiǎn)的Shell,甚至沒(méi)有Shell。鏡像中還不包含內(nèi)核——容器都是共享所在Docker主機(jī)的內(nèi)核。所以有時(shí)會(huì)說(shuō)容器僅包含必要的操作系統(tǒng)(通常只有操作系統(tǒng)文件和文件系統(tǒng)對(duì)象)。Docker官方鏡像AlpineLinux大約只有4MB,可以說(shuō)是Docker鏡像小巧這一特點(diǎn)的比較典型的例子。Windows鏡像要比Linux鏡像大一些,這與WindowsOS工作原理相關(guān)。容器鏡像Dockerimagepull是下載鏡像的命令。鏡像從遠(yuǎn)程鏡像倉(cāng)庫(kù)服務(wù)的倉(cāng)庫(kù)中下載。默認(rèn)情況下,鏡像會(huì)從DockerHub的倉(cāng)庫(kù)中拉取。Dockerimagepullalpine:latest命令會(huì)從DockerHub的alpine倉(cāng)庫(kù)中拉取標(biāo)簽為latest的鏡像??梢允褂靡韵旅顧z查Docker主機(jī)的本地倉(cāng)庫(kù)中是否包含鏡像。$DockerimagelsREPOSITORYTAGIMAGEIDCREATEDSIZE將鏡像取到Docker主機(jī)本地的操作是拉取。所以,如果讀者想在Docker主機(jī)使用最新的Ubuntu鏡像,需要拉取它。通過(guò)下面的命令可以將鏡像拉取到本地,并觀察其大小。容器鏡像的獲取只需要給出鏡像的名字和標(biāo)簽,就能在官方倉(cāng)庫(kù)中定位一個(gè)鏡像(采用“:”分隔)。從官方倉(cāng)庫(kù)拉取鏡像時(shí),Dockerimagepull命令的格式如下。Dockerimagepull<repository>:<tag>在之前的Linux示例中,通過(guò)下面的兩條命令完成Alpine和Ubuntu鏡像的拉取。Dockerimagepullalpine:latestDockerimagepullubuntu:latest這兩條命令從alpine和ubuntu倉(cāng)庫(kù)拉取了標(biāo)有“l(fā)atest”標(biāo)簽的鏡像。下面來(lái)介紹一下如何從官方倉(cāng)庫(kù)拉取不同的鏡像。$Dockerimagepullmongo:3.3.11$Dockerimagepullredis:latest$Dockerimagepullalpine鏡像命名和標(biāo)簽Docker鏡像存儲(chǔ)在鏡像倉(cāng)庫(kù)服務(wù)(ImageRegistry)當(dāng)中。Docker客戶端的鏡像倉(cāng)庫(kù)服務(wù)是可配置的,默認(rèn)使用DockerHub。鏡像倉(cāng)庫(kù)服務(wù)包含多個(gè)鏡像倉(cāng)庫(kù)(ImageRepository)。同樣,一個(gè)鏡像倉(cāng)庫(kù)中可以包含多個(gè)鏡像??赡苓@聽(tīng)起來(lái)讓人有些迷惑,所以下圖展示了包含3個(gè)鏡像倉(cāng)庫(kù)的鏡像倉(cāng)庫(kù)服務(wù),其中每個(gè)鏡像倉(cāng)庫(kù)都包含一個(gè)或多個(gè)鏡像。鏡像倉(cāng)庫(kù)服務(wù)下面介紹幾種鏡像中常用的操作命令。Dockerimagepull是下載鏡像的命令。鏡像從遠(yuǎn)程鏡像倉(cāng)庫(kù)服務(wù)的倉(cāng)庫(kù)中下載。Dockerimagels列出了本地Docker主機(jī)上存儲(chǔ)的鏡像??梢酝ㄟ^(guò)--digests參數(shù)來(lái)查看鏡像的SHA256簽名。Dockerimageinspect命令非常有用!該命令完美展示了鏡像的細(xì)節(jié),包括鏡像層數(shù)據(jù)和元數(shù)據(jù)。Dockerimagerm用于刪除鏡像。Docker鏡像常用命令實(shí)驗(yàn)?zāi)繕?biāo)請(qǐng)下載Nginx不同版本的鏡像。請(qǐng)查看Nginx不同版本鏡像的大小。請(qǐng)搜索Apache鏡像。請(qǐng)將本地鏡像進(jìn)行重命名。請(qǐng)將重命名后的鏡像推送至Dockerhub。請(qǐng)刪除本地鏡像。實(shí)驗(yàn):容器鏡像的獲取容器是鏡像的運(yùn)行時(shí)實(shí)例。正如從虛擬機(jī)模板上啟動(dòng)VM一樣,用戶也同樣可以從單個(gè)鏡像上啟動(dòng)一個(gè)或多個(gè)容器。虛擬機(jī)和容器最大的區(qū)別是容器更快并且更輕量級(jí)——與虛擬機(jī)運(yùn)行在完整的操作系統(tǒng)之上相比,容器會(huì)共享其所在主機(jī)的操作系統(tǒng)/內(nèi)核。容器容器和虛擬機(jī)都依賴于宿主機(jī)才能運(yùn)行。宿主機(jī)可以是筆記本,是數(shù)據(jù)中心的物理服務(wù)器,也可以是公有云的某個(gè)實(shí)例。在下面的示例中,假設(shè)宿主機(jī)是一臺(tái)需要運(yùn)行4個(gè)業(yè)務(wù)應(yīng)用的物理服務(wù)器。在虛擬機(jī)模型中,首先要開(kāi)啟物理機(jī)并啟動(dòng)Hypervisor引導(dǎo)程序。一旦Hypervisor啟動(dòng),就會(huì)占有機(jī)器上的全部物理資源,如CPU、RAM、存儲(chǔ)和NIC。Hypervisor接下來(lái)就會(huì)將這些物理資源劃分為虛擬資源,并且看起來(lái)與真實(shí)物理資源完全一致。然后Hypervisor會(huì)將這些資源打包進(jìn)一個(gè)叫作虛擬機(jī)(VM)的軟件結(jié)構(gòu)當(dāng)中。這樣用戶就可以使用這些虛擬機(jī),并在其中安裝操作系統(tǒng)和應(yīng)用。前面提到需要在物理機(jī)上運(yùn)行4個(gè)應(yīng)用,所以在Hypervisor之上需要?jiǎng)?chuàng)建4個(gè)虛擬機(jī)并安裝4個(gè)操作系統(tǒng),然后安裝4個(gè)應(yīng)用。容器和虛擬機(jī)(1)而容器模型則略有不同。服務(wù)器啟動(dòng)之后,所選擇的操作系統(tǒng)會(huì)啟動(dòng)。在Docker世界中可以選擇Linux,或者內(nèi)核支持內(nèi)核中的容器原語(yǔ)的新版本W(wǎng)indows。與虛擬機(jī)模型相同,OS也占用了全部硬件資源。在OS層之上,需要安裝容器引擎(如Docker)。容器引擎可以獲取系統(tǒng)資源,比如進(jìn)程樹(shù)、文件系統(tǒng)以及網(wǎng)絡(luò)棧,接著將資源分割為安全的互相隔離的資源結(jié)構(gòu),稱之為容器。每個(gè)容器看起來(lái)就像一個(gè)真實(shí)的操作系統(tǒng),在其內(nèi)部可以運(yùn)行應(yīng)用。按照前面的假設(shè),需要在物理機(jī)上運(yùn)行4個(gè)應(yīng)用。因此,需要?jiǎng)澐殖?個(gè)容器并在每個(gè)容器中運(yùn)行一個(gè)應(yīng)用。容器和虛擬機(jī)(2)下面介紹一些Docker容器中常用的命令。DockercontainerrunDockercontainerlsDockercontainerexecDockercontainerstopDockercontainerstartDockercontainerrmDockercontainerinspectDocker容器常用命令實(shí)驗(yàn)?zāi)繕?biāo)請(qǐng)下載任一軟件的鏡像。請(qǐng)基于此鏡像創(chuàng)建兩個(gè)容器。請(qǐng)刪除容器的鏡像,查看對(duì)應(yīng)的輸出。請(qǐng)進(jìn)入容器系統(tǒng),在任一目錄下創(chuàng)建文件后,退出容器,并將此容器提交為鏡像。請(qǐng)刪除容器和容器依賴的鏡像。實(shí)驗(yàn):容器生命周期管理在頂層設(shè)計(jì)中,Docker網(wǎng)絡(luò)架構(gòu)由3個(gè)主要部分構(gòu)成:CNM、Libnetwork和驅(qū)動(dòng)。CNM是設(shè)計(jì)標(biāo)準(zhǔn)。在CNM中,規(guī)定了Docker網(wǎng)絡(luò)架構(gòu)的基礎(chǔ)組成要素。Libnetwork是CNM的具體實(shí)現(xiàn),并且被Docker采用,Libnetwork通過(guò)Go語(yǔ)言編寫(xiě),并實(shí)現(xiàn)了CNM中列舉的核心組件。驅(qū)動(dòng)通過(guò)實(shí)現(xiàn)特定網(wǎng)絡(luò)拓?fù)涞姆绞絹?lái)拓展該模型的能力。Docker容器網(wǎng)絡(luò)方案Docker容器的四種網(wǎng)絡(luò)模式:bridge橋接模式Docker容器網(wǎng)絡(luò)(1)Docker容器的四種網(wǎng)絡(luò)模式:host模式Docker容器網(wǎng)絡(luò)(2)Docker容器的四種網(wǎng)絡(luò)模式:container模式Docker容器網(wǎng)絡(luò)(3)Docker容器的四種網(wǎng)絡(luò)模式:none模式Docker容器網(wǎng)絡(luò)(4)實(shí)驗(yàn)?zāi)繕?biāo)請(qǐng)查看Docker容器默認(rèn)網(wǎng)絡(luò)類型。請(qǐng)分別創(chuàng)建四種網(wǎng)絡(luò)類型的Docker容器實(shí)例。實(shí)驗(yàn):容器網(wǎng)絡(luò)從容器構(gòu)建鏡像創(chuàng)建一個(gè)容器,比如使用tomcat:latest鏡像創(chuàng)建一個(gè)tomcat-test容器修改tomcat-test容器的文件系統(tǒng),比如修改tomcat的server.xml文件中的默認(rèn)端口使用commit命令提交鏡像容器鏡像的構(gòu)建方式(1)使用Dockerfile構(gòu)建鏡像編寫(xiě)Dockerfile文件使用build命令構(gòu)建鏡像構(gòu)建方式對(duì)比:容器鏡像的構(gòu)建者可以任意修改容器的文件系統(tǒng)后進(jìn)行發(fā)布,這種修改對(duì)于鏡像使用者來(lái)說(shuō)是不透明的。容器鏡

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論