版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第八章Docker北京西普陽光教育科技股份有限公司授課講師:顧軍林目 錄Contents01 Docker的基本原理02 實驗29:Docker安裝部署06 Docker Registry07 實驗32:Docker Registry 的搭建和使用03實驗30:Docker命令行操作08Kubernetes容器云04 Dockerfile09實驗33 Kubernetes搭建和使用05 實驗31:Dockerfile創(chuàng)建PHP鏡像10本章小結(jié)01Docker的基本原理Docker簡介Docker 最初是Dotcloud 公司在法國期間發(fā)起的一個公司內(nèi)部項目。它是基于Dotcloud公司多年云服
2、務(wù)技術(shù)的一次革新,并于2013年3月以Apache 2.0授權(quán)協(xié)議開源,主要項目代碼在Github上進行維護,Docker項目后來還加入了Linux , 并成立推動開放容器聯(lián)盟。Docker使用Google公司推出的Go語言進行開發(fā)實現(xiàn),基于Linux內(nèi)核的Cgroups、Namespace,AUFS類的Union FS等技術(shù),對進程進行封裝隔離,屬于操作系統(tǒng)層面的虛擬化技術(shù)。由于隔離的進程獨立于宿主和其他隔離的進程,因此也稱其為容器。最初的實現(xiàn)是基于LXC的;從Docker0.7以后開始去除LXC,轉(zhuǎn)而使用自行開發(fā)的Libcontainer;從Docker1.11開始,則進一步演進為使用Ru
3、nc和Containerd。Docker 架構(gòu)圖Docker引擎是C/S的架構(gòu),Docker客戶端與Docker Daemon(守護進程)進行交互,Daemon負責(zé)構(gòu)建、運行和發(fā)布Docker容器,Docker的客戶端與Daemon通過Restful API進行Socket通信。Docker 架構(gòu)圖Docker基于Linux容器技術(shù)(LXC),Namespace,Cgroup,Unionfs(聯(lián)合文件系統(tǒng))等技術(shù)實現(xiàn):(1) Namespace(命名空間):每個容器都有自己獨立的命名空間,運行在其中的應(yīng)用像是在獨立的操作系統(tǒng)中運行一樣,命名空間保證了容器之間彼此互不影響。通過Namespace
4、實現(xiàn)了進程和進程之間所使用的資源隔離,使不同進程之間彼此不可見。Docker用到的命名空間有:PID命名空間:用于隔離進程,容器都有自己獨立的進程ID;NET命名空間:用于管理網(wǎng)絡(luò),容器有自己獨立的Network Info;IPC命名空間:用于訪問IPC資源(IPC:Inter Process Communication); MNT命名空間:用于管理掛載點,每個容器都有自己唯一的目錄掛載;UTS命名空間:用于隔離內(nèi)核和版本標識(UTC:Unix TimeProcess System),每個容器都有自己獨立的Hostname和Domain。(2) Cgroup(控制組):Cgroup是Linux
5、內(nèi)核的一個特性,主要用來對共享資源進行隔離、限制、審計等。(3) UnionFS(聯(lián)合文件系統(tǒng)):是一種分層、輕量級并且高性能的文件系統(tǒng),它支持對文件系統(tǒng)的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬文件系統(tǒng)下Docker 架構(gòu)圖Docker引擎是C/S的架構(gòu),Docker客戶端與Docker Daemon(守護進程)進行交互,Daemon負責(zé)構(gòu)建、運行和發(fā)布Docker容器,Docker的客戶端與Daemon通過Restful API進行Socket通信。Docker核心概念Docker核心Image(鏡像)容器倉庫(Registry)鏡像是一個只讀模板,由Docker
6、file文本描述鏡像的內(nèi)容。鏡像定義類似面對對象的類,從一個基礎(chǔ)鏡像(Base Image)開始。構(gòu)建一個鏡像實際就是安裝、配置和運行的過程。鏡像可以用來創(chuàng)建Docker容器,一個鏡像可以創(chuàng)建很多容器。Image(鏡像)Docker鏡像基于UnionFS把以上過程進行分層(Layer)存儲,這樣更新鏡像可以只更新變化的層。Docker的描述文件為Dockerfile,Dockerfile是一個文本文件,基本指令如下:FROM: 定 義 基 礎(chǔ) 鏡 像 ; MAINTAINER:作者或者維護者; RUN: 運 行 的 Linux 命 令 ; ADD: 增 加 文 件 或 目 錄 ; ENV: 定
7、 義 環(huán) 境 變 量 ; CMD:運行進程。container 容器容器是一個鏡像的運行實例, 容器由鏡像創(chuàng)建, 運行用戶指定的指令或者著Dockerfile定義的運行指令,可以將其啟動、停止、刪除,而這些容器都是相互隔離(獨立進程),互不可見的。比如運行ubuntu操作系統(tǒng)鏡像,-i前臺交互模型,-t分配一個偽終端,運行命令為/bin/bash,代碼如下:rootdocker # docker run -i -t ubuntu /bin/bashUnable to find image ubuntu:latest locallyTrying to pull repository docker
8、.io/library/ubuntu . latest: Pulling from docker.io/library/ubuntu 6b98dfc16071: Pull complete4001a1209541: Pull complete 6319fc68c576: Pull complete b24603670dc3: Pull complete 97f170c87c6f: Pull complete Digest:sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d倉庫(Registry)Dock
9、er Registry也是一個容器,倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。最大的公開倉庫是Docker Hub,存放了數(shù)量龐大的鏡像供用戶下載。國內(nèi)的公開倉庫包括時速云、網(wǎng)易云等,可以提供大陸用戶更穩(wěn)定快速的訪問。當然,用戶也可以在本地網(wǎng)絡(luò)內(nèi)創(chuàng)建一個私有倉庫。當用戶創(chuàng)建了自己的鏡像之后就可以使用Push命令將它上傳到公有或者私有倉庫,這樣下次在另外一臺機器上使用這個鏡像時候,只需要從倉庫上Pull下來就可以了。Docker 倉庫的概念跟Git類似,注冊服務(wù)器可以理解為Github這樣的托管服務(wù)。倉庫-容器-鏡像關(guān)系Rq m si tor y1Ubun tu1地I
10、IpushCOJl)mit U02Docker安裝部署【實驗29】 Docker安裝部署一、實驗?zāi)康?掌握安裝Docker環(huán)境前的配置主機項。 掌握在CentOS 7系統(tǒng)上安裝Docker服務(wù)。 掌握配置國內(nèi)鏡像加速器的方法。二、實驗內(nèi)容在物理機或虛擬機上,安裝Docker環(huán)境并配置國內(nèi)鏡像加速器。三、實驗步驟詳細操作步驟見本書提供的操作視頻。03Docker命令行操作【實驗30】 Docker命令行操作一、實驗?zāi)康?熟悉使用Docker命令從鏡像倉庫拉取鏡像。 熟悉對鏡像的簡單操作。 熟悉運行容器及對容器的簡單操作。二、實驗內(nèi)容通過命令行操作Docker,對鏡像、容器進行簡單的操作,加深對D
11、ocker Engine運作方式的理解。三、實驗步驟詳細操作步驟見本書提供的操作視頻。04DockerfileDockerfile簡介鏡像是多層存儲,每一層是在前一層的基礎(chǔ)上進行的修改;而容器同樣也是多層存儲,是以鏡像為基礎(chǔ)層,在其基礎(chǔ)上加一層作為容器運行時的存儲層。創(chuàng)建鏡像有兩種方法,一種是docker commit命令,二是用Dockerfile方法。在介紹docker commit命令前,首先回顧一下對代碼的版本控制。當修改代碼后,可以使用commit命令變更到版本服務(wù)器上。對于容器,當創(chuàng)建容器后,如果后面對容器做了修改,就可以利用commit命令將修改提交為一個新的鏡像。Dockerf
12、ile是由一系列命令和參數(shù)構(gòu)成的腳本,這些命令應(yīng)用于基礎(chǔ)鏡像并最終創(chuàng)建一個新的鏡像。它簡化了從頭到尾的流程,并極大的簡化了部署工作。Dockerfile從FROM命令開始,緊接著跟隨各種方法、命令和參數(shù)。其產(chǎn)出為一個新的可以用于創(chuàng)建容器的鏡像。Dockerfile指令詳解(1) FROM格式:FROM FROM指定構(gòu)建鏡像的基礎(chǔ)源鏡像,如果本地沒有指定的鏡像,則會自動從Docker的公共庫pull鏡像下來。 FROM必須是Dockerfile中非注釋行的第一個指令,即一個Dockerfile從FROM語句開始。(2) MAINTAINER格式:MAINTAINER 指定創(chuàng)建鏡像的用戶。(3)
13、RUN每條RUN指令將在當前鏡像基礎(chǔ)上執(zhí)行指定命令,并提交為新的鏡像,RUN有兩種格式:RUN commandRUN “executable”,”param1”,”param2”.Dockerfile指令詳解(4) CMDCMD有三種使用格式:CMD “executable”,”param1”,”param2”. CMD “param1”,”param2”CMD command param1 param2(shell from)CMD的目的是為了在啟動容器時提供一個默認的命令執(zhí)行選項。如果用戶啟動容器時指定了運行的命令,則會覆蓋掉CMD指定的命令。(5) EXPOSE格式: EXPOSE .E
14、XPOSE指令告訴Docker服務(wù)端容器對外映射的本地端口,需要在docker run的時候使用-p或者-P選項生效。(6) ENV格式有兩種:ENV #只能設(shè)置一個變量ENV =.#允許一次設(shè)置多個變量Dockerfile指令詳解(7) ARG格式:ARG =ARG和ENV一樣,都是設(shè)置環(huán)境變量。所不同的時,ARG所設(shè)置的是構(gòu)建環(huán)境的環(huán)境變量,在將來容器運行時是不會存在這些環(huán)境變量的。(8) COPY 格式:COPY .COPY “,.”COPY兩種使用方式,一種類似于命令行,一種類似于函數(shù)調(diào)用。如:COPY package.json /usr/src/app/(9) ADDADD指令和CO
15、PY的格式及性質(zhì)基本一致,只是如果為一個TAR壓縮文件,且壓縮格式為GZIP、BZIP2及XZ的情況下,那么ADD指令將自動解壓縮這個壓縮文件到。(10) ENTRYPOINTENTRYPOINT的目的和CMD一樣,都是在指定容器啟動程序及參數(shù)。(11) VOLUME 格式:VOLUME “”,”. 或VOLUME 容器在運行時應(yīng)盡量保持容器存儲層不發(fā)生寫操作,數(shù)據(jù)庫類需要保存動態(tài)數(shù)據(jù)的應(yīng)用,其數(shù)據(jù)Dockerfile指令詳解(12) WORKDIR 格式:WORKDIR 使用WORKDIR指令可以用來指定工作目錄(或者稱為當前目錄),以后各層的當前目錄就被為指定的目錄。該目錄需要已經(jīng)存在,W
16、ORKDIR并不會幫助開發(fā)者建立目錄。WORKDIR指令可以在ENV設(shè)置變量之后調(diào)用環(huán)境變量:ENV DIRPATH /pathWORKDIR $DIRPATH/$DIRNAME最終路徑則為/path/$DIRNAME。(13) USER 格式:USER USER指令和WORKDIR相似,都可以改變環(huán)境狀態(tài)并影響以后的層。WORKDIR是改變工作目,USER則是改變之后的層執(zhí)行RUN、CMD及ENCRYPOINT這類命令的身份。當然,和WORKDIR一樣,USER只是幫助開發(fā)者切換到指定用戶而已,如果這個用戶不存在,則法切換。05Dockerfile創(chuàng)建PHP鏡像【實驗31】 Dockerfi
17、le創(chuàng)建PHP鏡像一、實驗?zāi)康?掌握Dockerfile各個命令的使用。 通過Dockerfile創(chuàng)建PHP鏡像。二、實驗內(nèi)容在宿主機端安裝配置Mariadb數(shù)據(jù)庫服務(wù),使用Dockerfile創(chuàng)建PHP鏡像并運行,查看我們在數(shù)據(jù)庫中創(chuàng)建的表是否能夠正確顯示在Web界面。三、實驗步驟詳細操作步驟見本書提供的操作視頻。06Docker RegistryDocker倉庫簡介鏡像構(gòu)建完成后,可以很容易的在當前宿主機上運行。但是,如果需要在其他服務(wù)器上使用這個鏡像,就需要一個集中的存儲、分發(fā)鏡像的服務(wù)器,Docker Registry(鏡像注冊)就是這樣的服務(wù)。開發(fā)者可以通過:的格式來指定具體是這個軟
18、件哪個版本的鏡像。如果不給出標簽,則以Latest作為默認標簽。Docker Registry服務(wù)可以分為兩種。一種為公開并開放給所有的用戶使用,包含用戶的搜索、拉取,鏡像提交時更新,還可以免費保管用戶鏡像數(shù)據(jù)。這類服務(wù)受制于網(wǎng)絡(luò)帶寬的限制,并不能及時、快速的獲取所需要的資源,但是優(yōu)點是可以獲取大部分并可以立即使用的鏡像,減少鏡像的制作時間。另外一種服務(wù)是在一定范圍對特定的用戶提供Registry服務(wù),一般存在于學(xué)校內(nèi)部、企業(yè)內(nèi)部的服務(wù)管理和研發(fā)等環(huán)境,這在一定程度上保證了鏡像拉取的速度,對內(nèi)部核心鏡像數(shù)據(jù)有保護作用,但是也存在鏡像內(nèi)容不豐富的問題。私有倉庫(1) 私有倉庫特點倉庫(Regis
19、try)是集中存放鏡像的地方,在上面我們已經(jīng)說明了Docker倉庫分為公有倉庫和私有倉庫,然而公有倉庫在某些情況下并不適用于公司內(nèi)部傳輸。通過對比兩種倉庫的特點,大致可以得出私有倉庫有以下優(yōu)點: 節(jié)省帶寬; 傳輸速度快; 方便存儲。(2) Docker Registry工作方式Docker Registry是Image的倉庫,當開發(fā)者編譯完成一個Image時,就可以推送到公共的Registry,如Docker Hub,也可以推送到自己的私有Registry。使用DockerClient,開發(fā)者可以搜索已經(jīng)發(fā)布的Image,從中拉去Image到本地,并在容器中運行。07Docker Regist
20、ry的搭建和使用【實驗32】 Docker Registry的搭建和使用一、實驗?zāi)康?掌握在CentOS 7系統(tǒng)下搭建Docker Registry私有鏡像倉庫; 了解Docker Registry私有鏡像倉庫的運行原理; 掌握Docker API的使用。二、實驗內(nèi)容將Docker Hub上面的Registry鏡像拉取到本地,運行并上傳本機鏡像進行測試是否可用,另外簡單介紹了Docker API的基本使用。三、實驗步驟詳細操作步驟見本書提供的操作視頻。08Kubernetes容器云Kubernetes簡介Kubernetes是一個開源的,用于管理云平臺中多個主機上的容器化的應(yīng)用, Kubern
21、etes的目標是讓部署容器化的應(yīng)用簡單并且高效(Powerful),Kubernetes提供了應(yīng)用部署,規(guī)劃,更新,維護的一種機制。Kubernetes一個核心的特點就是能夠自主的管理容器來保證云平臺中的容器按照用戶的期望狀態(tài)運行著(比如用戶想讓Apache一直運行,用戶不需要關(guān)心怎么去做, Kubernetes會自動去監(jiān)控,然后去重啟,新建,總之,讓Apache一直提供服務(wù)),管理員可以加載一個微型服務(wù),讓規(guī)劃器來找到合適的位置,同時,Kubernetes也系統(tǒng)提升工具以及人性化方面,讓用戶能夠方便的部署自己的應(yīng)用。Kubernetes對計算資源進行了更高層次的抽象,通過將容器進行細致的組合
22、,將最終的應(yīng)用服務(wù)交給用戶。Kubernetes在模型建立之初就考慮了容器跨機連接的要求,支持多種網(wǎng)絡(luò)解決方案,同時在Service層次構(gòu)建集群范圍的SDN網(wǎng)絡(luò)。Kubernetes核心概念(1) PODPOD是Kubernetes的基本操作單元,由相關(guān)的一個或多個容器構(gòu)成,共同對外提供服務(wù)。POD是一個統(tǒng)一管理及調(diào)度的基本單元,不可分割。(2) Replication ControllerReplication Controller(RC)確保任何時候Kubernetes集群中有指定數(shù)量的POD 副本( Replicas ) 在運行, 如果多余指定數(shù)量的POD 副本在運行, Replicat
23、ion Controller會殺死多余的POD。(3) ServiceService也是Kubernetes的基本操作單元,每一個服務(wù)后面都有多個對應(yīng)的POD提供支持。(4) LabelLabel是用于篩選POD、Service、Replication Controller的Key/Value鍵值對。Kubernetes架構(gòu)InternetKubectl(User Commands)FirewallauthorizationAuthenticationNodekubeletProxyAPISController Manager (replication Controller Etc.)Sche
24、dulingActuatorSchedulerSchedulerRest (PODS,Services, Rep.Controllers)Master components Colocated,or spread across machines,As dictated by cluster size.Node.ContainerdvisorCaPODContainerkubletCCDistributed Watchable Storage (implemented via etcd)PODProxyPODPODDockerCaPODPODDockerdvisorontainer.ontainerKubernetes架構(gòu)Kubernetes主要
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版家用空調(diào)租賃及安裝維修一體化合同3篇
- 二零二五版國有土地儲備中心資產(chǎn)置換專項合同3篇
- 二零二五年智慧環(huán)保產(chǎn)業(yè)園區(qū)建設(shè)補貼協(xié)議范本3篇
- 二零二五版旅游度假區(qū)與旅游院校合作共建人才培養(yǎng)合同6篇
- 武漢華夏理工學(xué)院《土木工程施工技術(shù)A》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年紅酒年份品鑒代理銷售授權(quán)協(xié)議3篇
- 2024食用油綠色環(huán)保包裝設(shè)計制作合同3篇
- 2024年項目合作協(xié)議書模板
- 2024年食品工廠代加工食品安全責(zé)任合同范本2篇
- 二零二五年度車位買賣與車位抵押合同范本2篇
- 2023年河南省公務(wù)員錄用考試《行測》真題及答案解析
- 2024年安徽省公務(wù)員錄用考試《行測》真題及答案解析
- 山西省太原市重點中學(xué)2025屆物理高一第一學(xué)期期末統(tǒng)考試題含解析
- 充電樁項目運營方案
- 2024年農(nóng)民職業(yè)農(nóng)業(yè)素質(zhì)技能考試題庫(附含答案)
- 高考對聯(lián)題(對聯(lián)知識、高考真題及答案、對應(yīng)練習(xí)題)
- 新版《鐵道概論》考試復(fù)習(xí)試題庫(含答案)
- 【律師承辦案件費用清單】(計時收費)模板
- 高中物理競賽真題分類匯編 4 光學(xué) (學(xué)生版+解析版50題)
- Unit1FestivalsandCelebrations詞匯清單高中英語人教版
- 2024年上海市中考語文試題卷(含答案)
評論
0/150
提交評論