docker中image是什么意思

docker中,image的意思是“鏡像”,是一個文件系統;image可以將幾層目錄掛載到一起,形成一個與linux目錄結構一樣的虛擬文件系統,docker通過這些文件再加上宿主機的內核提供了一個linux的虛擬環境。

docker中image是什么意思

本教程操作環境:linux7.3系統、docker-1.13.1版、Dell G3電腦。

docker中image是什么意思

image 里面是一層層文件系統,叫做 union FS(聯合文件系統)。

聯合文件系統,可以將幾層目錄掛載到一起,形成一個虛擬文件系統。虛擬文件系統的目錄結構就像普通 linux 的目錄結構一樣,docker 通過這些文件再加上宿主機的內核提供了一個 linux 的虛擬環境。

每一層文件系統我們叫做一層 layer,聯合文件系統可以對每一層文件系統設置三種權限,只讀(readonly)、讀寫(readwrite)和寫出(whiteout-able),但是 docker 鏡像中每一層文件系統都是只讀的。

構建鏡像的時候,從一個最基本的操作系統開始,每個構建的操作都相當于做一層的修改,增加了一層文件系統。一層層往上疊加,上層的修改會覆蓋底層該位置的可見性,這也很容易理解,就像上層把底層遮住了一樣。

當你使用的時候,你只會看到一個完全的整體,你不知道里面有幾層,也不清楚每一層所做的修改是什么。結構類似這樣:

docker中image是什么意思

從基本的看起,一個典型的 Linux 文件系統由 bootfs 和 rootfs 兩部分組成,bootfs(boot file system) 主要包含bootloader 和 kernel,bootloader 主要用于引導加載 kernel,當 kernel 被加載到內存中后 bootfs 會被 umount 掉。

rootfs (root file system) 包含的就是典型 Linux 系統中的/dev,/proc,/bin,/etc 等標準目錄和文件。下圖就是 docker image 中最基礎的兩層結構,不同的 linux 發行版(如 ubuntucentos ) 在 rootfs 這一層會有所區別,體現發行版本的差異性。

docker中image是什么意思

傳統的 Linux 加載 bootfs 時會先將 rootfs 設為 read-only,然后在系統自檢之后將 rootfs 從 read-only 改為 read-write,然后我們就可以在 rootfs 上進行讀寫操作了。

但 Docker 在 bootfs 自檢完畢之后并不會把 rootfs 的 read-only 改為 read-write,而是利用 union mount(UnionFS 的一種掛載機制)將 image 中的其他的 layer 加載到之前的 read-only 的 rootfs層之上,每一層 layer 都是 rootfs 的結構,并且是read-only 的。所以,我們是無法修改一個已有鏡像里面的 layer 的!

只有當我們創建一個容器,也就是將 Docker 鏡像進行實例化,系統會分配一層空的 read-write 的 rootfs ,用于保存我們做的修改。一層 layer 所保存的修改是增量式的,就像 git 一樣。

docker中image是什么意思

綜上,image其實就是一個文件系統,它與宿主機的內核一起為程序提供一個虛擬的linux環境。在啟動docker container時,依據image,docker會為container構建出一個虛擬的linux環境。

推薦學習:《docker視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享