Docker 映像檔

我們都知道,作業系統分為核心和使用者空間。對於 Linux 而言,核心啟動後,會載入 root 檔案系統為其提供使用者空間支援。而 Docker 映像檔(Image),就相當於是一個 root 檔案系統。比如官方映像檔 ubuntu:14.04 就包含了完整的一套 Ubuntu 14.04 最小系統的 root 檔案系統。

Docker 映像檔是一個特殊的檔案系統,除了提供容器執行時所需的程式、庫、資源、設定等檔案外,還包含了一些為執行時準備的一些設定參數(如匿名卷、環境變數、使用者等)。映像檔不包含任何動態資料,其內容在建構之後也不會被改變。

分層儲存

因為映像檔包含作業系統完整的 root 檔案系統,其體積往往是龐大的,因此在 Docker 設計時,就充分利用 Union FS 的技術,將其設計為分層儲存的架構。所以嚴格來說,映像檔並非是像一個 ISO 那樣的打包檔案,映像檔只是一個虛擬的概念,其實際秉持並非由一個檔案組成,而是由一組檔案系統組成,或是說,由多層檔案系統聯合組成。

映像檔建構時,會一層層建構,前一層是後一層的基礎。每一層建構完就不會再發生改變,後一層上的任何改變只發生在自己這一層。比如,刪除前一層檔案的作業,實際不是真的刪除前一層的檔案,而是僅在目前層標記為該檔案已刪除。在最終容器執行的時候,雖然不會看到這個檔案,但是實際上該檔案會一直跟隨映像檔。因此,在建構映像檔的時候,需要額外小心,每一層盡量只包含該層需要加入的東西,任何額外的東西應該在該層建構結束前清理掉。

分層儲存的特徵還使得映像檔的復用、訂製變的更為容易。甚至可以用之前建構好的映像檔作為基礎層,然後進一步加入新的層,以訂製自己所需的內容,建構新的映像檔。

關於映像檔建構,將會在後續相關章節中做進一步的講解。

results matching ""

    No results matching ""