docker鏡像是一個特殊的檔案系統,除了提供容器運行時所需的程式、庫、資源、配置等檔案外,還包含了一些為運行時準備的一些配置參數(如匿名卷、環境變數、使用者等);鏡像不包含任何動態數據,其內容在建置之後也不會被改變。
本文操作環境:ubuntu 18.04系統、Docker 20.10.11版、Dell G3電腦。
docker映像到底是什麼?
先了解下什麼是映像:
我們都知道,作業系統分為 核心 和 使用者空間。對於 Linux 而言,核心啟動後,會掛載 root 檔案系統為其提供使用者空間支援。而 Docker 映像(Image),就等於是一個 root 檔案系統。例如官方鏡像 ubuntu:18.04 就包含了完整的一套 Ubuntu 18.04 最小系統的 root 檔案系統。
Docker 映像是一個特殊的檔案系統,除了提供容器執行時間所需的程式、函式庫、資源、配置等檔案外,還包含了一些為執行時間準備的一些配置參數(如匿名磁碟區、環境變數、使用者等)。鏡像 不包含 任何動態數據,其內容在建置之後也不會被改變。
分層儲存
因為映像包含作業系統完整的root 檔案系統,其體積往往是龐大的,因此在Docker 設計時,就充分利用 的技術,將其設計為分層儲存的架構。所以嚴格來說,鏡像並非是像一個ISO 那樣的打包文件,鏡像只是一個虛擬的概念,其實際體現並非由一個文件組成,而是由一組文件系統組成,或者說,由多層文件系統聯合組成。
鏡像建構時,會一層層構建,前一層是後一層的基礎。每一層建置完就不會再改變,後一層上的任何改變只會發生在自己這一層。例如,刪除前一層文件的操作,實際上不是真的刪除前一層的文件,而是僅在當前層標記為該文件已刪除。在最終容器運行的時候,雖然不會看到這個文件,但是實際上該文件會一直跟隨鏡像。因此,在建造鏡像的時候,需要額外小心,每一層盡量只包含該層需要添加的東西,任何額外的東西應該在該層構建結束前清理掉。
分層儲存的特徵也使得鏡像的重複使用、自訂變更的更為容易。甚至可以用之前建造好的鏡像作為基礎層,然後進一步添加新的層,以自訂自己所需的內容,建立新的鏡像。
關於鏡像構建,將會在後續相關文章中做進一步的講解。
推薦學習:《Docker影片教學》
以上是docker映像到底是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!