電子活頁-03.05.overlay2驅動工作機制_第1頁
電子活頁-03.05.overlay2驅動工作機制_第2頁
電子活頁-03.05.overlay2驅動工作機制_第3頁
電子活頁-03.05.overlay2驅動工作機制_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

overlay2驅動工作機制OverlayFS在單個Linux主機上分為兩個代表不同層次的目錄,并且對外統一呈現為單個目錄。這兩個目錄通常被稱作層,用于統一呈現目錄的聯合進程被稱為聯合掛載(UnionMount)。OverlayFS將低層目錄稱為lowerdir,高層目錄稱為upperdir,對外公開統一視圖的目錄被稱為merged。而overlay2驅動本身最多支持128個OverlayFS層,這為與層相關的Docker命令(如dockerbuildand或dockercommit)提供更好的性能,并且在底層文件系統上占用更少的索引節點。圖1展示了Docker鏡像和Docker容器是如何分層的。鏡像層是lowerdir,容器層是upperdir。對外暴露的統一視圖就是容器掛載點。該圖還展示了Docker結構是如何映射到OverlayFS結構的。圖1OverlayFS的鏡像與容器分層當鏡像層和容器層有相同的文件時,則容器層(upperdir)優先,容器層的文件會掩蓋鏡像層中相同的文件。容器合并(merged)顯示出統一的視圖。為創建一個容器,overlay2驅動程序將表示鏡像的最頂層的目錄與容器的新目錄結合起來。鏡像的層是位于OverlayFS文件系統中的低層目錄lowerdir,并且是只讀的。容器的新目錄是高層目錄upperdir,并且是可寫的。接下來驗證分析overlay2存儲驅動所實現的鏡像層和容器層。Docker中的/var/lib/docker/overlay2目錄是用于存儲Docker容器的數據層和鏡像層的。每個鏡像層在/var/lib/docker/overlay2目錄中都有自己的目錄用于包含其內容,但是鏡像層ID與目錄ID并不對應。容器也存在于/var/lib/docker/overlay2目錄中。(1)在/var/lib/docker/overlay2目錄中會發現多個目錄。注意不要直接操作/var/lib/docker目錄中的任何文件和目錄,因為這些文件和目錄是由Docker管理的。使用tree命令該目錄層次結構(為簡單起見,使用選項-L2僅顯示兩層目錄)。這里從中挑出同一個容器的兩個目錄。├──f332bbba101bfc02ecfd92eb71f0677d26d314220d2337eacb534efd711cc7f9│

├──diff│

├──link│

├──lower│

├──merged│

└──work├──f332bbba101bfc02ecfd92eb71f0677d26d314220d2337eacb534efd711cc7f9-init│

├──committed│

├──diff│

├──link│

├──lower│

└──work其中diff、merged和work是目錄,其他是文件。只有運行中的容器才存在merged目錄。(2)每一層中的diff目錄包含該層的實際內容。[root@host1~]#ls-l/var/lib/docker/overlay2/f332bbba101bfc02ecfd92eb71f0677d26d314220d2337eacb534efd711cc7f9/diff總用量0drwxr-xr-x3rootroot1711月122021var(3)每一層中都有一個link文件,內容為l(小寫的L)目錄中的鏈接,該鏈接實際指向當前層目錄中的diff目錄。例如:[root@host1~]#cat/var/lib/docker/overlay2/f332bbba101bfc02ecfd92eb71f0677d26d314220d2337eacb534efd711cc7f9/linkBWSDOT2NTUWAXJYWESKLAHDUE2l(小寫的L)目錄包含的是符號鏈接。這些軟連接都是短格式的層標識符,指向每一層中的diff目錄,這樣做的目的是避免執行mount操作時超出頁大小限制。[root@host1~]#ls-l/var/lib/docker/overlay2/l/BWSDOT2NTUWAXJYWESKLAHDUE2lrwxrwxrwx1rootroot721月1517:47/var/lib/docker/overlay2/l/BWSDOT2NTUWAXJYWESKLAHDUE2->../f332bbba101bfc02ecfd92eb71f0677d26d314220d2337eacb534efd711cc7f9/diff(4)除底層外,其余每一層的目錄中包含一個lower文件,用于表示其父層。該文件包含了該層的所有更低層的名稱和順序(用軟連接表示),可以根據該文件得出整個鏡像的層次結構。[root@host1~]#cat/var/lib/docker/overlay2/f332bbba101bfc02ecfd92eb71f0677d26d314220d2337eacb534efd711cc7f9/lowerl/HAKT3ASPFK5CBM4L6K4A425VHR:l/OANY2V3HOUMS4XLAWZ23Y4HTBL:l/RJPQZOEQBUQBL3I44S7BT53GYI:l/I35GBRKS4OJGLSYNI6RUETU5BR:l/IC6IGNFNW3OPWXMBT7RZCKHGDW:l/YRCQ2UOSSRP56ZKP6DIHFE2WAP本例中該層下面包括6個低層。繼續追蹤下一層進行驗證。[root@host1~]#ls-l/var/lib/docker/overlay2/l/HAKT3ASPFK5CBM4L6K4A425VHRlrwxrwxrwx1rootroot771月1517:47/var/lib/docker/overlay2/l/HAKT3ASPFK5CBM4L6K4A425VHR->../f332bbba101bfc02ecfd92eb71f0677d26d314220d2337eacb534efd711cc7f9-init/diff查看該層的實際內容。[root@host1~]#ls-l/var/lib/docker/overlay2/f332bbba101bfc02ecfd92eb71f0677d26d314220d2337eacb534efd711cc7f9-init/diff總用量0drwxr-xr-x4rootroot431月1517:47devdrwxr-xr-x2rootroot661月1517:47etc查看該層lower文件的內容。[root@host1~]#cat/var/lib/docker/overlay2/f332bbba101bfc02ecfd92eb71f0677d26d314220d2337eacb534efd711cc7f9-init/lowerl/OANY2V3HOUMS4XLAWZ23Y4HTBL:l/RJPQZOEQBUQBL3I44S7BT53GYI:l/I35GBRKS4OJGLSYNI6RUETU5BR:l/IC6IGNFNW3OPWXMBT7RZCKHGDW:l/YRCQ2UOSSRP56ZKP6DIHFE2WAP繼續追蹤最低層。[root@host1~]#ls-l/var/lib/docker/overlay2/l/YRCQ2UOSSRP56ZKP6DIHFE2WAPlrwxrwxrwx1rootroot721月1517:47/var/lib/docker/overlay2/l/YRCQ2UOSSRP56ZKP6DIHFE2WAP->../f796eb6054f40344cf72dca3b593bf7026c9114364108e130739489546566903/diff[root@host1~]#ls-l/var/lib/docker/overlay2/f796eb6054f40344cf72dca3b593bf7026c9114364108e130739489546566903總用量8-rw-------1rootroot01月1517:47committeddrwxr-xr-x19rootroot40961月1517:47diff-rw-r--r--1rootroot261月1517:47link可以發現,最低層也就是底層,沒有lower文件,因此例中f796eb6054f40344cf72dca3b593bf7026c9114364108e130739489546566903為鏡像的底層。這一層的實際內容如下。[root@host1~]#ls-l/var/lib/docker/overlay2/f796eb6054f40344cf72dca3b593bf7026c9114364108e130739489546566903/diff總用量12drwxr-xr-x2rootroot409611月122021bindrwxr-xr-x2rootroot611月122021devdrwxr-xr-x15rootroot409611月122021etcdrwxr-xr-x2rootroot611月122021homedrwxr-xr-x5rootroot18511月122021libdrwxr-xr-x5rootroot4411月122021mediadrwxr-xr-x2rootroot611月122021mntdrwxr-xr-x2rootroot611月122021optdr-xr-xr-x2rootroot611月122021procdrwx------2rootroot611月122021rootdrwxr-xr-x2rootroot611月122021rundrwxr-xr-x2rootroot409611月122021sbindrwxr-xr-x2rootroot611月122021srvdrwxr-xr-x2rootroot611月122021sysdrwxrwxrwt2rootroot611月122021tmpdrwxr-xr-x7rootroot6611月122021usrdrwxr-xr-x12rootroot13711月122021var(5)除底層外,其余每一層的目錄中還包含一個merged目錄(其中包含其父層和自身的合成內容)和一個由OverlayFS內部使用的work目錄(容器工作目錄)。[root@host1~]#ls-l/var/lib/docker/overlay2/f332bbba101bfc02ecfd92eb71f0677d26d314220d2337eacb534efd711cc7f9/merged總用量8drwxr-xr-x1rootroot2211月132021bindrwxr-xr-x1rootroot431月1517:47dev-rwxrwxr-x1rootroot15511月132021entrypoint.shdrwxr-xr-x1rootroot661月1517:47etcdrwxr-xr-x2rootroot611月122021homedrwxr-xr-x1rootroot1711月122021libdrwxr-xr-x5rootroot4411月122021mediadrwxr-xr-x2rootroot611月122021mntdrwxr-xr-x2rootroot611月122021optdr-xr-xr-x2rootroot611月122021procdrwx------2rootroot611月122021rootdrwxr-xr-x2rootroot611月122021rundrwxr-xr-x2rootroot409611月122021sbindrwxr-xr-x2rootroot611月122021srvdrwxr-xr-x2rootroot611月122021sysdrwxrwxrwt2rootroot611月122021tmpdrwxr-xr-x1rootroot5511月122021usrdrwxr-xr-x1rootroot1711月122021var[root@host1~]#ls-l/var/lib/docker/overlay2/f332bbba101bfc02ecfd92eb71f0677d26d314220d2337eacb534efd711cc7f9/work總用量0d---------2rootroot61月2216:59workmerged目錄中內容最多,它是overlay2的直接掛載點,對容器的任何修改會反應到該目錄中。(6)執行以下命令查看使用Docker的overlay2存儲驅動時存在的掛載(此時容器正在運行)。為了可讀性,下面的輸出被調整。[root@host1~]#mount|grepoverlayoverlayon/var/lib/docker/overlay2/f332bbba101bfc02ecfd92eb71f0677d26d314220d2337eacb534efd711cc7f9/m

溫馨提示

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

評論

0/150

提交評論