深刻理解Docker镜像大小
1.docker镜像分析
是否还记得第一个接触Docker的时候,你从Docker Hub下拉的那个镜像呢?在那个处女镜像的基础上,你运行了容器生涯的处女容器。镜像的基石作用已经很明显,在Docker的世界里,可以说是:No Image,No Container。
再进一步思考Docker镜像,大家可能很快就会联想到以下几类镜像:
1.系统级镜像:如Ubuntu镜像,CentOS镜像以及Debian容器等;
2.工具栈镜像:如Golang镜像,Flask镜像,Tomcat镜像等;
3.服务级镜像:如MySQL镜像,MongoDB镜像,RabbitMQ镜像等;
4.应用级镜像:如WordPress镜像,DockerRegistry镜像等。
镜像林林总总,想要运行Docker容器,必须要有Docker镜像;想要有Docker镜像,必须要先下载Docker镜像;既然涉及到下载Docker镜像,自然会存在Docker镜像存储。谈到Docker镜像存储,那我们首先来聊聊Docker镜像大小方面的知识。
以下将从三个角度来分析Docker镜像的大小问题:Dockerfile与镜像、联合文件系统以及镜像共享关系。
Dockerfile与镜像
Dockerfile由多条指令构成,随着深入研究Dockerfile与镜像的关系,很快大家就会发现,Dockerfile中的每一条指令都会对应于Docker镜像中的一层。
继续以如下Dockerfile为例:
1 | FROM ubuntu:14.04 |