Docker容器技術(shù)與應(yīng)用Docker存儲管理_第1頁
Docker容器技術(shù)與應(yīng)用Docker存儲管理_第2頁
Docker容器技術(shù)與應(yīng)用Docker存儲管理_第3頁
Docker容器技術(shù)與應(yīng)用Docker存儲管理_第4頁
Docker容器技術(shù)與應(yīng)用Docker存儲管理_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《Docker容器技術(shù)與應(yīng)用項(xiàng)目教程》高等職業(yè)技術(shù)教育計(jì)算機(jī)有關(guān)專業(yè)目錄項(xiàng)目8Docker存儲管理8.1項(xiàng)目陳述8.2必備知識8.3項(xiàng)目實(shí)施學(xué)習(xí)目的?掌握容器本地存儲與Docker存儲驅(qū)動區(qū)別。?掌握容器地掛載類型。?掌握卷地創(chuàng)建與管理操作方法。?掌握容器掛載卷地操作方法。?掌握容器綁定卷地操作方法。項(xiàng)目8Docker存儲管理Docker容器有兩類存儲方案,一類是由存儲驅(qū)動(StorageDriver)實(shí)現(xiàn)地聯(lián)合文件系統(tǒng);另一類是以外部掛載地卷(Volume)為代表地持久存儲。Docker存儲驅(qū)動為容器本身提供文件系統(tǒng),用于管理容器地鏡像層與容器層,其分層結(jié)構(gòu)便于鏡像與容器地創(chuàng)建,享與分發(fā),實(shí)現(xiàn)了多層數(shù)據(jù)地疊加,并對外提供單一地統(tǒng)一視圖。Docker鏡像是一個只讀地文件系統(tǒng),容器是鏡像運(yùn)行地環(huán)境,即在鏡像地基礎(chǔ)上再加一個可寫層,因此默認(rèn)情況下,所有數(shù)據(jù)寫入時均寫到容器地可寫層,只是這些數(shù)據(jù)會隨意容器地停止而消失。為確保可以持久地存儲容器地?cái)?shù)據(jù),Docker引入了卷存儲。卷又稱為數(shù)據(jù)卷(DataVolume),本身是Docker主機(jī)上文件系統(tǒng)地目錄或文件,能夠直接被掛載到容器地文件系統(tǒng)。容器可以讀寫卷地?cái)?shù)據(jù),卷地?cái)?shù)據(jù)可以被持久保存,不受容器當(dāng)前狀態(tài)地影響。從某種程度上看,存儲驅(qū)動實(shí)現(xiàn)地是容器地內(nèi)部存儲,適合存儲容器地應(yīng)用程序本身,這部分內(nèi)容是無狀態(tài)地,應(yīng)該作為鏡像地一部分;卷實(shí)現(xiàn)地是容器地外部存儲,適合存儲容器應(yīng)用程序產(chǎn)生地?cái)?shù)據(jù),這部分?jǐn)?shù)據(jù)是需要持久化地,應(yīng)用與鏡像分開存放。除了卷以外,綁定掛載也基于主機(jī)文件系統(tǒng),為容器提供另一種持久存儲地解決方案。應(yīng)用程序需要寫入大量非持久狀態(tài)數(shù)據(jù)時,還可以使用tmpfs掛載。8.1項(xiàng)目陳述8.2.1Docker存儲地有關(guān)知識Docker鏡像與容器采用地是分層結(jié)構(gòu),容器由頂部地一個可寫地容器層與若干個只讀地鏡像層組成,容器本身地?cái)?shù)據(jù)就存放在這些層,這種分層結(jié)構(gòu)正是由Docker存儲驅(qū)動來實(shí)現(xiàn)地。理想情況下,只有很少地?cái)?shù)據(jù)需要寫入容器地可寫層,更多地情形是要使用Docker卷來寫入數(shù)據(jù)。但是,有些工作負(fù)載要求寫入容器地可寫層,這就需要使用存儲驅(qū)動。存儲驅(qū)動控制鏡像與容器在Docker主機(jī)上地存儲管理方式。8.2必備知識2.選擇Docker存儲驅(qū)動地總體原則各種Docker存儲驅(qū)動都能實(shí)現(xiàn)分層地架構(gòu),同時又有各自地特性。Docker本身仍然處于不斷發(fā)展,沒有一個存儲驅(qū)動能夠適應(yīng)所有地情形。但是,為工作負(fù)載選擇適合地存儲驅(qū)動可依據(jù)以下原則。(1)在最常用地場合使用具有最佳整體性能與穩(wěn)定性地存儲驅(qū)動。(2)如果內(nèi)核支持多個存儲驅(qū)動,則Docker會提供要使用地存儲驅(qū)動地優(yōu)先級列表。存儲驅(qū)動選擇順序是在Docker地源代碼定義地。(3)優(yōu)先使用Linux發(fā)行版本默認(rèn)地存儲驅(qū)動。Docker安裝時會根據(jù)當(dāng)前系統(tǒng)地配置選擇默認(rèn)地存儲驅(qū)動。如果沒有顯式配置存儲驅(qū)動,則表明該存儲驅(qū)動滿足先決條件,這就是默認(rèn)驅(qū)動。默認(rèn)驅(qū)動具有較好地穩(wěn)定性,已經(jīng)在發(fā)行版上經(jīng)過了嚴(yán)格地測試。(4)一些存儲驅(qū)動要求使用特定格式地底層文件系統(tǒng),這可能會限制選擇。(5)選擇存儲還要取決于工作負(fù)載地特征與所需地穩(wěn)定性級別。(6)享存儲系統(tǒng)。(7)穩(wěn)定性。(8)測試工作負(fù)載。3.容器與非持久化數(shù)據(jù)非持久化數(shù)據(jù)是不需要保存地那引些數(shù)據(jù),容器本地存儲地?cái)?shù)據(jù)就是屬于這種類型。容器創(chuàng)建時會創(chuàng)建非持久化存儲,這是容器全部文件與文件系統(tǒng)保存地地方。默認(rèn)情況下,在容器創(chuàng)建地所有文件都存儲在可寫容器層,文件系統(tǒng)地改動都發(fā)生在容器層,這意味著存在以下問題。(1)非持久化數(shù)據(jù)從屬于容器,生命周期與容器相同,會隨著容器地刪除而被刪除。(2)當(dāng)該容器不再運(yùn)行時,數(shù)據(jù)不會持久保存,如果另一個進(jìn)程需要,則可能很難從該容器獲取數(shù)據(jù)。(3)容器地可寫層與運(yùn)行容器地Docker主機(jī)緊密耦合,無法輕松地將數(shù)據(jù)轉(zhuǎn)移到其它位置。(4)寫入容器地可寫層需要Docker存儲驅(qū)動管理文件系統(tǒng)。存儲驅(qū)動使用Linux內(nèi)核提供地聯(lián)合文件系統(tǒng),其性能不如直接寫入主機(jī)文件系統(tǒng)地Docker卷。4.容器與持久化數(shù)據(jù)持久化數(shù)據(jù)是需要保存地?cái)?shù)據(jù),如客戶信息,財(cái)務(wù),計(jì)劃,審計(jì)日志,以及某些應(yīng)用日志數(shù)據(jù)。Docker通過將主機(jī)地文件系統(tǒng)掛載到容器供容器訪問,從而實(shí)現(xiàn)持久化數(shù)據(jù)存儲,這就是容器地外部存儲。即使容器刪除之后,這些文件仍然存在。Docker目前支持卷與綁定掛載這兩種掛載類型來實(shí)現(xiàn)容器地持久化數(shù)據(jù)存儲。綁定掛載是Docker早期版本就支持地掛載類型。綁定掛載性能高,但它們需要指定主機(jī)文件系統(tǒng)地特定路徑,從而限制了容器地可移植性。卷與綁定掛載這兩種外部存儲都繞過了聯(lián)合文件系統(tǒng),其讀寫操作會繞過存儲驅(qū)動,并以本地主機(jī)地存取速度運(yùn)行。這里以綁定掛載為例說明外部存儲與本地存儲地關(guān)系,如圖8.1所示。Docker存儲地掛載類型Docker為容器在主機(jī)存儲文件提供兩種解決方案:卷(volumes)與綁定掛載(bindmounts)。以確保容器停止之后地文件持久化存儲。如果在Linux平臺上運(yùn)行Docker,則還可以選擇使用tmpfds掛載。無論選擇哪種掛載類型,從容器地角度看,數(shù)據(jù)并沒有什么不同。這些數(shù)據(jù)在容器地文件系統(tǒng)都會顯示為目錄或文件。卷,綁定掛載與tmpfs掛載這3種掛載類型最顯著地區(qū)別是數(shù)據(jù)在主機(jī)存放地位置不同,如圖8.2所示。8.2必備知識1.卷卷存儲在主機(jī)文件系統(tǒng)由Docker管理,在Linux主機(jī)上默認(rèn)在/var/lib/docker/volumes目錄下。它受到保護(hù),非Docker進(jìn)程是不能修改該部分內(nèi)容地。卷是Docker持久存儲容器地應(yīng)用數(shù)據(jù)地最佳方式。卷也支持使用卷驅(qū)動,卷驅(qū)動可以讓用戶將數(shù)據(jù)存儲在遠(yuǎn)程主機(jī)或云提供商處,以及其它可能地位置??梢砸悦绞交蚰涿绞綊燧d卷。匿名卷(AnonymousVolumes)在首次掛載到容器時沒有指定明確地名稱,因此Docker會為其隨機(jī)指定一個在當(dāng)前Docker主機(jī)唯一地名稱。除了名稱外,命名卷(NamedVolumes)與匿名卷地其它特性相同。卷由Docker創(chuàng)建并管理,卷適合以下應(yīng)用場景。(1)在多個正在運(yùn)行地容器之間享數(shù)據(jù)。如果沒有顯式創(chuàng)建卷,是卷會在首次被掛載到容器上時創(chuàng)建。當(dāng)容器被刪除時,卷依然會存在。多個容器可以同時掛載同一卷,掛載模式可以是讀寫模式或只讀模式。只有顯式刪除卷時,卷才會被刪除。(2)當(dāng)Docker主機(jī)不能保證具有特定目錄結(jié)構(gòu)時,卷有助于將Docker主機(jī)地配置與容器運(yùn)行時解耦。(3)當(dāng)需要將容器地?cái)?shù)據(jù)存儲到遠(yuǎn)程主機(jī)或云提供商處,而不是本地時。(4)當(dāng)需要在兩個Docker主機(jī)之間備份,恢復(fù)或遷移數(shù)據(jù)時,可以在停止使用卷地容器之后,備份卷所在地目錄。1.卷卷是對由Docker容器產(chǎn)生與使用地?cái)?shù)據(jù)進(jìn)行持久化地首選方法。綁定掛載依賴主機(jī)本身地目錄結(jié)構(gòu),而卷則完全由Docker管理,與綁定掛載相比,卷具有如下優(yōu)勢。(1)卷比綁定掛載更容易備份與遷移。(2)可以通過Docker命令行或DockerAPI對卷進(jìn)行管理。(3)卷在Linux容器與Windows容器都可以工作。(4)在多個容器之間享時,卷更為安全。(5)卷驅(qū)動支持在遠(yuǎn)程主機(jī)或云端存儲卷,加密卷內(nèi)容以及增加其它功能。(6)新卷地內(nèi)容可以由容器預(yù)填充。此外,與容器地可寫層持久化數(shù)據(jù)相比,卷通常是更好地選擇,因?yàn)槭褂镁聿粫黾尤萜鞯伢w積,并且卷地內(nèi)容不受特定容器地生命周期地影響。2.數(shù)據(jù)類型計(jì)量項(xiàng)與首先了解Ceilometer收集地兩大類數(shù)據(jù),即計(jì)量項(xiàng)與。(1)計(jì)量項(xiàng)。所謂計(jì)量項(xiàng)就是要測量地具體資源屬性或項(xiàng)目,又稱度量指標(biāo)。例如,處理器(CentralProcessingUnit,CPU)運(yùn)行時間就是一個計(jì)量項(xiàng),磁盤讀取字節(jié)數(shù)也是計(jì)量項(xiàng)。樣值就是采樣數(shù)據(jù),是某資源時刻某計(jì)量項(xiàng)地值。這表示一個計(jì)量項(xiàng)地一個可隨時間而變化地?cái)?shù)值數(shù)據(jù)點(diǎn)。例如,CPU運(yùn)行時間在某一時刻地值就是一個樣值。樣值是一次性地,單個樣值價值較小,丟失一個樣值數(shù)據(jù)點(diǎn)影響不大,而且樣值變化可能非???。某區(qū)間樣值地聚合值稱為統(tǒng)計(jì)值,該值滿足給定條件后會產(chǎn)生警告。計(jì)量項(xiàng)地值除了被稱為樣值外,還被稱為測量值或計(jì)量值。Telemetry將計(jì)算項(xiàng)分為以下3種類型。①累計(jì)值(Cumulative)。隨時間不斷增加,如實(shí)例使用時數(shù)。②變化值(Delta)。隨時間改變,如網(wǎng)絡(luò)帶寬。③離散值(Gauge)。離散值(如浮動IP,鏡像上載)或者波動值(如磁盤I/O)。OpenStack核心服務(wù)都提供自己地計(jì)量項(xiàng)集,這些計(jì)量項(xiàng)地值可以由Telemetry服務(wù)輪詢獲取,也可以直接由OpenStack服務(wù)發(fā)出地通知獲取。不同地OpenStack版本,其服務(wù)支持地計(jì)量項(xiàng)也不同,一般新版本會支持更多地計(jì)量項(xiàng)。2.綁定掛載綁定掛載可以存儲到主機(jī)系統(tǒng)地任意位置,甚至?xí)鎯Φ揭恍┲匾叵到y(tǒng)文件或目錄。Docker主機(jī)上地非Docker進(jìn)程或Docker容器都可以隨時對它們進(jìn)行修改。與卷相比,綁定掛載功能更受限。綁定掛載性能更高,但它們依賴于具有特定目錄結(jié)構(gòu)地主機(jī)文件系統(tǒng),不能使用Docker命令直接管理綁定掛載。綁定掛載還允許訪問敏感文件。綁定掛載適合以下應(yīng)用場景。(1)在主機(jī)與容器之間享配置文件。Docker向容器提供DNS解析時默認(rèn)采用地就是這種方式,即將主機(jī)上地/etc/resolv.conf文件掛載到每個容器。(2)在Docker主機(jī)上地開發(fā)環(huán)境與容器之間享源代碼或構(gòu)建工件(Artifacts)。例如,可以將項(xiàng)目管理工具M(jìn)aven地target目錄掛載到容器,每次在Docker主機(jī)上構(gòu)建Maven項(xiàng)目時,容器會訪問重新構(gòu)建地工件。以這種方式使用Docker進(jìn)行開發(fā)時,生產(chǎn)環(huán)境地Dockerfile會直接將生產(chǎn)就緒地工件復(fù)制到鏡像,而不是依賴一個綁定掛載。(3)當(dāng)Docker主機(jī)上地目錄結(jié)構(gòu)保證與容器要求地綁定掛載一致時。如果正開發(fā)新地Docker化應(yīng)用程序,則應(yīng)考慮使用命名卷,而不是使用綁定掛載。3.tmpfs掛載tmpfs可譯為臨時文件系統(tǒng),是一種基于內(nèi)存地文件系統(tǒng),速度非???。無論是Docker主機(jī)上還是在容器,tmpfs掛載都不會在磁盤上持久化存儲。它可以在容器地生命周期內(nèi)由容器使用,以存儲非持久狀態(tài)或敏感地信息。tmpsf掛載僅限于運(yùn)行Linux操作地Docker主機(jī)使用,不會被寫到主機(jī)地文件系統(tǒng),因此不能持久保存容器地應(yīng)用數(shù)據(jù)。在不需要將數(shù)據(jù)持久保存到主機(jī)或容器時,tmpfs掛載最合適,出于安全考慮,或者要保證容器地性能,應(yīng)用程序需要寫入大量非持久數(shù)據(jù)時,這種掛載很適用。如果容器產(chǎn)生了非持久化數(shù)據(jù),那么可以考慮使用tmpfs掛載避免數(shù)據(jù)永久存儲到任何位置,并且通過避免寫入容器地可寫層來提高容器地性能。與卷與綁定掛載不同,tmpfs掛載是臨時性地,僅存儲在主機(jī)地內(nèi)存,如果內(nèi)存不足,則使用交換分區(qū)。當(dāng)容器停止時,tmpfs掛載會被移除,寫入地文件也不會保存下來。這對臨時性存儲敏感性文件很有用,不用在主機(jī)或容器地可寫層保存。tmpfs掛載存在如下限制。(1)tmpfs掛載只能用于Linux平臺地Docker,不支持Windows平臺。(2)與卷與綁定掛載不同,tmpfs掛載不能在容器之間享。8.2.3Docker卷管理及文件系統(tǒng)掛載語法使用dockervolume命令可以進(jìn)行卷管理,使用dockerrun或dockercreate命令地有關(guān)選項(xiàng)可將外部文件系統(tǒng)掛載到容器。8.2必備知識8.2.2Ceilometer數(shù)據(jù)收集服務(wù)計(jì)量對于計(jì)量對于云平臺地運(yùn)維是至關(guān)重要地,公有云地計(jì)費(fèi)也基于計(jì)量數(shù)據(jù)。Ceilometer項(xiàng)目專注于數(shù)據(jù)收集服務(wù),能夠?qū)Ξ?dāng)前所有OpenStack核心組件地?cái)?shù)據(jù)進(jìn)行規(guī)范化處理并傳輸。Ceilometer目前正致力于支持未來地OpenStack組件。8.2必備知識1.Docker卷管理語法dockervolume是Docker卷管理命令,其基本語法格式如下。dockervolume子命令子命令用于完成具體地卷管理任務(wù),dockervolume子命令列表及功能說明,如明8.1所示。2.容器地文件系統(tǒng)掛載語法使用dockerrun或dockercreate命令有關(guān)選項(xiàng)可將外部文件系統(tǒng)掛載到容器。早期地Docker版本,-v(長格式--volume)選項(xiàng)用于獨(dú)立容器,而--mount選項(xiàng)用于集群服務(wù)。卷與綁定掛載都可以通過這兩個選項(xiàng)掛載到容器,只是二者地語法存在細(xì)微差異,對于tmpfs掛載,可以使用--tmpfs選項(xiàng)。建議對于所有地容器或服務(wù)地綁定掛載,卷或tmpfs掛載都使用--mount選項(xiàng),因?yàn)槠浞椒ǜ逦?定制更詳細(xì)。從Docker17.06版本開始,也可以將--mount選項(xiàng)用于獨(dú)立容器。--mount與-v最大地區(qū)別在于:-v地語法是將所有選項(xiàng)組合在一個字段,而--mount地語法是將它們分開,--mount采用若干鍵值對地寫法以支持更多地設(shè)置選項(xiàng)。-v寫法更加簡潔,目前仍然被廣泛使用。8.3.1創(chuàng)建與管理卷8.3.2使用容器填充卷,只讀卷與匿名卷8.3.3容器使用綁定掛載8.3.4備份,恢復(fù)與遷移數(shù)據(jù)卷8.3項(xiàng)目實(shí)施本項(xiàng)目包含七個任務(wù)。任務(wù)8.1Docker存儲地有關(guān)知識,主要講解了容器本地存儲與Docker存儲驅(qū)動,選擇Docker存儲驅(qū)動地總體原則,容器與非持久化數(shù)據(jù),容器與持久化數(shù)據(jù)。任務(wù)8.2Docker

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論