首頁 >運維 >Docker >docker中image是什麼意思

docker中image是什麼意思

WBOY
WBOY原創
2021-12-30 11:38:447743瀏覽

在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 發行版(如 ubuntu 和 CentOS ) 在 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影片教學

以上是docker中image是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn