版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
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ō)是不透明的。容器鏡像的大小不可控。容器鏡像依賴的父鏡像變化時(shí),容器鏡像必須進(jìn)行重新構(gòu)建。Dockerfile鏡像是完全透明的,所有用于構(gòu)建鏡像的指令都可以通過(guò)Dockerfile看到。Dockerfile鏡像需要修改時(shí),可以通過(guò)修改Dockerfile中的指令,再重新構(gòu)建生成,沒(méi)有任何問(wèn)題。Dockerfile可以在GitHub等源碼管理網(wǎng)站上進(jìn)行托管,DockerHub自動(dòng)關(guān)聯(lián)源碼進(jìn)行構(gòu)建。推薦使用DockerFile構(gòu)建容器鏡像。容器鏡像的構(gòu)建方式(2)Dockerfile由一行行命令語(yǔ)句組成,并支持以#開(kāi)頭的注釋行。例如:DockerFile示例#Testweb-apptousewithPluralsightcoursesandDockerDeepDivebook#Linuxx64FROMalpineLABELmaintainer="nigelpoulton@"#InstallNodeandNPM
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年蘇教新版選修3地理上冊(cè)階段測(cè)試試卷含答案
- 2025年粵人版九年級(jí)生物上冊(cè)月考試卷含答案
- 二零二五年度衛(wèi)生間清潔劑研發(fā)與供應(yīng)合同3篇
- 二零二五年度2025版文化創(chuàng)意產(chǎn)業(yè)融資合同范本4篇
- 2025年度環(huán)保工程派遣人員勞務(wù)合同范本4篇
- 擔(dān)保合同約定條款協(xié)議書(shū)(2篇)
- 2025年度摩托車(chē)租賃平臺(tái)合作合同范本3篇
- 2025年度牧草種植基地環(huán)境保護(hù)合同范本3篇
- 二零二五版苗木種植基地林業(yè)病蟲(chóng)害防治合同2篇
- 二零二五年度物流供應(yīng)鏈融資借款合同大全4篇
- GB/T 16895.3-2024低壓電氣裝置第5-54部分:電氣設(shè)備的選擇和安裝接地配置和保護(hù)導(dǎo)體
- 計(jì)劃合同部部長(zhǎng)述職報(bào)告范文
- 人教版高一地理必修一期末試卷
- GJB9001C質(zhì)量管理體系要求-培訓(xùn)專題培訓(xùn)課件
- 二手車(chē)車(chē)主寄售協(xié)議書(shū)范文范本
- 窗簾采購(gòu)?fù)稑?biāo)方案(技術(shù)方案)
- 五年級(jí)上冊(cè)小數(shù)除法豎式計(jì)算練習(xí)300題及答案
- 語(yǔ)言規(guī)劃講義
- 生活用房設(shè)施施工方案模板
- 上海市楊浦區(qū)2022屆初三中考二模英語(yǔ)試卷+答案
- GB/T 9755-2001合成樹(shù)脂乳液外墻涂料
評(píng)論
0/150
提交評(píng)論