• 06: docker镜像分层


    docker分层

    docker镜像的分层(使用的是kvm 链接克隆,写时复制的特性)

    1:分层的好处:重复利用,节约资源

    2:镜像越大,迁移时间越长;并且你如果使用docker做集群,那么如果镜像太大,

    有变化,每个更新的话,都需要很长时间。所以最好是镜像分2-3层(基础系统-应用服务-代码),集群采预与下载。

     

    查看分层镜像信息:(请注意missing - )

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

    IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT

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

    185aecfa154d        13 days ago         /bin/bash                                       45.2MB              

    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 整体流程:

  • 相关阅读:
    定义Java类实现字节流转字符流
    zookeeper中的QuorumPeerMain解析
    Hadoop集群搭建(cluster setup),ssh免密后一直要求输入密码的原因
    cd .ssh返回-bash: cd: .ssh:No such file or directory怎么办
    安装jdk配置环境变量后jps command not found
    Redis简介二
    bash重定向
    Redis简介
    maven项目下pom.xml依赖报错
    《《《zTree视频学习笔记
  • 原文地址:https://www.cnblogs.com/jim-xu/p/11785882.html
Copyright © 2020-2023  润新知