现如今docker如此受人追捧,主要是因为它的轻量化、可以快速部署以及资源的利用。但是一个docker images质量的好与坏,主要取决于dockerfile编写的质量。同样功能的镜像,但是不同的dockerfile build出来的镜像大小是不一样的,这是因为docker是由一层一层的只读层累积起来的,而这每一层就是dockerfile中的每一条指令,所以docker image的大小完全取决于dockerfile中的每条指令生成的中间层的大小,
下面我们来举一个小例子来详细说明dockerimage的形成。
我们有一个dockerfile:
from ubuntu:14.04
add run.sh /
volume /data
cmd [“./run.sh”]
这个简单的dockerfile主要做的事情是:基于ubuntu:14.04系统将run.sh放在根目录下,设置卷挂载点,然后在image启动的时候run脚本run.sh。
下图就是形成的docker image:
很明显,由图我们可以看到,四条指令分别形成四个层,假设ubuntu:14.04是150mb,run.sh是1mb的话,那么from ubuntu:14.04层的大小就是150mb,add run.sh /层的大小即为1mb,而volume /data层和cmd [“./run.sh”]由于没有加