Docker鏡像分層結構

docker鏡像分層結構

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

分層的好處

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

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

當容器啓動時,一個新的可寫層被加載到鏡像的頂層,這一層一般被成爲「容器層」。內存

對容器的改動,不管添加、刪除、仍是修改文件都只會發生在容器層中。資源

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

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

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

容器層保存的是鏡像層的變化,但不會對鏡像自己進行任何修改。這也解釋了鏡像能夠被多個容器共享file

參考

相關文章
相關標籤/搜索