06: docker鏡像分層

docker分層

docker鏡像的分層(使用的是kvm 連接克隆,寫時複製的特性)docker

1:分層的好處:重複利用,節約資源centos

2:鏡像越大,遷移時間越長;而且你若是使用docker作集羣,那麼若是鏡像太大,bash

有變化,每一個更新的話,都須要很長時間。因此最好是鏡像分2-3層(基礎系統-應用服務-代碼),集羣採預與下載。ssh

 

查看分層鏡像信息:(請注意missing - )spa

[root@k8s129 ~]# docker history centos_ssh:v1.2 --no-trunc3d

IMAGE               CREATED             CREATED BY                                      SIZE                COMMENTblog

275e0f02e6b1        13 days ago         /usr/sbin/sshd -D                               32B                 資源

185aecfa154d        13 days ago         /bin/bash                                       45.2MB              class

0f3e07c0138f        4 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  集羣

<missing>           4 weeks ago         /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B                  

<missing>           4 weeks ago         /bin/sh -c #(nop) ADD file:d6fdacc1972df524a…   220MB    

如何實現

至於容器如何獲取鏡像層文件而又不影響到是鏡像層的呢?docker是這樣實現的?
若是須要獲取某個文件,那麼容器曾會從上到下去下一層的鏡像層去獲取文件,若是該層文件不存在,那麼就會去下一鏡像層去尋找,直到最後一層。
對於用戶而言,用戶面向的是一個疊加後的文件系統。

 

而任何對於文件的操做都會記錄在容器層,例如說修改文件,容器層會把在鏡像層找到的文件拷貝到容器層而後進行修改,刪除文件則會在容器層內記錄刪除文件的記錄。

大概原理圖:

前面咱們基於centos鏡像,一層一層作了幾個鏡像

注意:

實際製做鏡像的時候,咱們應該經量把會發生變化的層放在最後,這樣前面的層就能夠走緩衝。(好比下圖:先製做httpd sshd , 先製做sshdhttpd的區別)

 

 

 

 附上:

Docker 總體流程:

相關文章
相關標籤/搜索