Docker鏡像分層結構

docker鏡像分層結構

用過Dockerfile構建鏡像的都知道Dockerfile執行完每一條指令都會創建一個新的鏡像,最終的鏡像由層層疊加而成。

分層的好處

最大的好處就是共享資源。
當多個鏡像從相同的base鏡像構建而來,那麼Docker host只需要在磁盤保存一份base鏡像,同時內存中也只需要加載一份base鏡像,就可以爲所有的容器服務了。

容器的修改並不會影響鏡像

當容器啓動時,一個新的可寫層被加載到鏡像的頂層,這一層通常被成爲“容器層”。

對容器的改動,無論添加、刪除、還是修改文件都只會發生在容器層中。

容器層是可寫的,鏡像層是隻讀的。

  • 添加文件時,新的文件添加到容器層。
  • 讀取文件時,從上往下在各個鏡像層查找,一旦找到就複製到容器層,然後讀入內存。
  • 修改文件,從上往下查找,複製到容器層,然後修改之。
  • 刪除文件,從上往下查找,找到後返回,記錄刪除操作。

只有當需要修改時才賦值一份數據,這種特性被稱爲Copy-On-Write。

容器層保存的是鏡像層的變化,但不會對鏡像本身進行任何修改。這也解釋了鏡像可以被多個容器共享

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章