docker容器和映象的區別

2022-09-06 22:36:15 字數 2737 閱讀 1521

此內容有些偏底層, 程式設計師看了會沉默, 運維狗看了會流淚

在學習使用docker過程中會遇到映象和容器,兩者之間的區別是什麼?有什麼關聯?本文將用**並茂的方式介紹容器、映象的區別,能夠很好的幫助各位深入理解docker。

映象可以看成是由多個映象層疊加起來的乙個檔案系統(通過unionfs與aufs檔案聯合系統實現),映象層也可以簡單理解為乙個基本的映象,而每個映象層之間通過指標的形式進行疊加。

根據上圖,映象層的主要組成部分包括映象層 id、映象層指標 「指向父層」、元資料「 layer metadata,包含了 docker 構建和執行的資訊和父層的層次資訊」。唯讀層和讀寫層「top layer」的組成部分基本一致,同時讀寫層可以轉換成唯讀層「 通過docker commit操作實現」。

元資料(metadata)就是關於這個層的額外資訊,它不僅能夠讓docker獲取執行和構建時的資訊,還包括父層的層次資訊。需要注意,唯讀層和讀寫層都包含元資料。

每一層都包括了乙個指向父層的指標。如果乙個層沒有這個指標,說明它處於最底層。

在docker主機中映象層(image layer)的元資料被儲存在名為」json」的檔案中,比如說:

/var/lib/docker/graph/e809f156dc985.../json             ##e809f156dc985...就是這層的id
乙個容器的元資料好像是被分成了很多檔案,但或多或少能夠在/var/lib/docker/containers/目錄下找到,就是乙個可讀層的id。這個目錄下的檔案大多是執行時的資料,比如說網路,日誌等等。

映象是一堆唯讀層的統一視角,除了最底層沒有指向外,每一層都指向它的父層。統一檔案系統( union file system)技術能夠將不同的層整合成乙個檔案系統,為這些層提供了乙個統一的視角,這樣就隱藏了多層的存在。在使用者的角度看來,只存在乙個檔案系統。映象每一層都是不可寫的,都是唯讀層。

我們可以看到映象包含多個唯讀層,它們重疊在一起。除了最下面一層,其它層都會有乙個指標指向下一層。這些層是docker內部的實現細節,並且能夠在docker主機的檔案系統上訪問到。統一檔案系統(union file system,公升級版為aufs)技術能夠將不同的層整合成乙個檔案系統,為這些層提供了乙個統一的視角,這樣就隱藏了多層的存在,在使用者的角度看來,只存在乙個檔案系統。我們可以在的右邊看到這個視角的形式。

你可以在你的主機檔案系統上找到有關這些層的檔案。需要注意的是,在乙個執行中的容器內部,這些層是不可見的。在我的主機上,我發現它們存在於/var/lib/docker/aufs目錄下。

(j**ascript:void(0)

Docker容器和映象的區別

在學習使用docker過程中會遇到映象和容器,兩者之間的區別是什麼?有什麼關聯?本文將用 並茂的方式介紹容器 映象的區別,能夠很好的幫助各位深入理解docker。映象可以看成是由多個映象層疊加起來的乙個檔案系統 通過unionfs與aufs檔案聯合系統實現 映象層也可以簡單理解為乙個基本的映象,而每...

Docker容器和映象的區別

在學習使用docker過程中會遇到映象和容器,兩者之間的區別是什麼?有什麼關聯?本文將用 並茂的方式介紹容器 映象的區別,能夠很好的幫助各位深入理解docker。映象可以看成是由多個映象層疊加起來的乙個檔案系統 通過unionfs與aufs檔案聯合系統實現 映象層也可以簡單理解為乙個基本的映象,而每...

Docker的映象和容器的區別

要理解docker映象和docker容器之間的區別,確實不容易。假設linux核心是第0層,那麼無論怎麼執行docker,它都是執行於核心層之上的。這個docker映象,是乙個唯讀的映象,位於第1層,它不能被修改或不能儲存狀態。乙個docker映象可以構建於另乙個docker映象之上,這種層疊關係可...