Docker 容器文件系统
Dockerfile是软件的原材料,
Docker镜像是软件的交付品,而
Docker容器则可以认为是软件的运行态。从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段,Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石。Docker镜像
Docker镜像是Dockerfile的产物,是Docker容器的前提,大有承前启后之意。Docker技术发展两年有余,相信大家很早就听说过Docker大多采用
联合文件系统(Union Filesystem),为Docker容器提供文件系统服务。关于Docker镜像,有以下特性:
由Dockerfile生成
呈现层级结构
每层镜像包含:镜像文件以及镜像json元数据信息
Docker容器
Docker容器是Docker镜像的运行态体现。概括而言,就是在Docker镜像之上,运行进程。进程启动的方式有两种,用户即可以选择运行自己另行指定的命令,也可以选择运行Docker镜像内部指定的命令。
Docker容器的文件系统,可以说大部分由Docker镜像来提供。为什么说是大部分呢?其实是有原因的,镜像内容虽多,但依然不是全部。下面,我会带大家看看,Docker镜像中有什么,而Docker容器的哪些内容不在Docker镜像中。
Docker容器文件系统
那就让我们一图看尽Docker容器的文件系统:

上图从一个较为全面的角度阐述了
Dockerfile、
Docker镜像与
Docker容器三者的关系。Dockerfile体现
Docker容器已经在运行,但是追本溯源,我们依然可以找到Dockerfile的影子。上图中,我们可以发现,
Docker容器依附
Docker镜像,而
Docker镜像的
Dockerfile是这样的:
FROM ubuntu:14.04
ADD run.sh /
VOLUME /data
CMD ["./run.sh"]我们可以看到,以上Dockerfile中的每一条命令,都在Docker镜像中以一个独立镜像层的形式存在。
Docker镜像体现
毫无疑问,Docker镜像是由Dockerfile构建而成,我们也可以看到图中下4层被标记为Docker镜像。作为Docker技术的核心,我们必须了解Docker如何构建镜像,以及Docker镜像构建之后的产物是什么。










