Docker的镜像分层
实验
比如说使用dockerfile去创建一个最简单的hello镜像。创建好对应的dockerfile之后去进行创建:
FROM alpine:latestMAINTAINER sbbCMD echo "hello world"
执行了上面的命令我们可以看到存在着两个镜像,其中hello_world是我刚刚创建好的镜像
$ docker imgaesalpinehello_world
Docker分层
那么为什么会有两个镜像呢?这是由于docker的镜像分层结构所导致的,如下图所示。

如何实现
如果需要获取某个文件,那么容器曾会从上到下去下一层的镜像层去获取文件,如果该层文件不存在,那么就会去下一镜像层去寻找,直到最后一层。
对于用户而言,用户面向的是一个叠加后的文件系统。

综述
镜像分层的好处
Dockerfile优化
dockerfile 优化:1:尽可能选择体积小linux发行版,alpine2:尽可能合并RUN指令,清理无用的文件(yum缓存,源码包)3:修改dockerfile时,把需要变更的内容尽可能放在dockerfile结尾4:使用.dockerignore,减少不必要的文件ADD . /html例如:[root@docker01 nginx]# cat dockerfileFROM centos:6.9RUN rm -rf /etc/yum.repos.d/* && \curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo && \curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo && \yum install nginx -yWORKDIR /usr/share/nginx/htmlADD xiaoniao.tar.gz .ADD init.sh /init.shEXPOSE 80VOLUME /usr/share/nginx/htmlCMD ["/bin/bash","/init.sh"]

文章转载自云原生数字化,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




