docker 鏡像采用分層存儲(chǔ)機(jī)制,每一層是對(duì)其父層的修改版本,允許鏡像輕松共享層以節(jié)省存儲(chǔ)空間。鏡像使用 oci 標(biāo)準(zhǔn)化存儲(chǔ)格式,存儲(chǔ)于本地主機(jī)(/var/lib/docker/image)和 docker 注冊(cè)表(如 docker hub)。
Docker 鏡像的存儲(chǔ)機(jī)制
Docker 鏡像是創(chuàng)建和運(yùn)行容器的模板。它們存儲(chǔ)在 Docker 注冊(cè)表中,可以從 Docker Hub 或其他注冊(cè)表中拉取。
Docker 鏡像分層存儲(chǔ),每一層都是其父層的修改版本。這使得鏡像可以輕松共享層,從而節(jié)省存儲(chǔ)空間。
存儲(chǔ)格式
Docker 鏡像使用了一種稱(chēng)為 OCI (Open Container Initiative) 鏡像規(guī)范的標(biāo)準(zhǔn)化存儲(chǔ)格式。此格式定義了鏡像的文件結(jié)構(gòu)和內(nèi)容。
存儲(chǔ)位置
Docker 鏡像存儲(chǔ)在以下位置:
本地主機(jī):拉取的鏡像存儲(chǔ)在 /var/lib/docker/image 目錄中。
Docker 注冊(cè)表:鏡像也可以存儲(chǔ)在 Docker 注冊(cè)表中,如 Docker Hub。
分層機(jī)制
Docker 鏡像被組織成一系列分層,每一層都是其父層的修改版本。這些層是按順序堆疊的,底層是基礎(chǔ)鏡像,頂層是最新的修改。
每個(gè)層包含對(duì)文件系統(tǒng)的更改,如添加或刪除文件。當(dāng)創(chuàng)建新的鏡像時(shí),它將從父鏡像繼承所有底層,并在其頂部添加自己的修改層。
節(jié)省空間
分層存儲(chǔ)機(jī)制通過(guò)允許共享底層節(jié)省存儲(chǔ)空間。當(dāng)多個(gè)鏡像共享相同的底層時(shí),它們只需要存儲(chǔ)各自的修改層。
例如,如果有一個(gè)基于 Debian 鏡像的鏡像,并且兩個(gè)鏡像都安裝了 Apache,則它們將共享相同的 Debian 底層。只有 Apache 層會(huì)有所不同,從而節(jié)省存儲(chǔ)空間。