docker镜像是一个只读的docker容器模板,含有启动docker容器所需的文件系统结构及其内容,因此是启动一个docker容器的基础。docker镜像的文件内容以及一些运行docker容器的配置文件组成了docker容器的静态文件系统运行环境:rootfs。可以这么理解,docker镜像是docker容器的静态视角,docker容器是docker镜像的运行状态。
我们可以通过下图来理解docker daemon、docker镜像以及docker容器三者的关系
从上图中我们可以看到,当由ubuntu:14.04镜像启动容器时,ubuntu:14.04镜像的镜像层内容将作为容器的rootfs;而ubuntu:14.04镜像的json文件,会由docker daemon解析,并提取出其中的容器执行入口CMD信息,以及容器进程的环境变量ENV信息,最终初始化容器进程。当然,容器进程的执行入口来源于镜像提供的rootfs。
rootfs
rootfs是docker容器在启动时内部进程可见的文件系统,即docker容器的根目录。rootfs通常包含一个操作系统运行所需的文件系统,例如可能包含典型的类Unix操作系统中的目录系统,如/dev、/proc、/bin、/etc、/lib、/usr、/tmp及运行docker容器所需的配置文件、工具等。在传统的Linux操作系统内核启动时,首先挂载一个只读的rootfs,当系统检测其完整性之后,再将其切换为读写模式。
而在doc