Docker 镜像
概念
镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象,镜像内部是一个精简的OS,同时还包含应用运行所必须的文件和依赖包,因为容器的设计初衷就是快速和小巧,所以镜像通常都比较小。镜像可以理解为一种构建时(build-time)结构,而容器可以理解为是一种运行时(run-time)结构。
Docker镜像由一些松耦合的只读镜像层组成,采用docker pull imageName:tag ,可以看出以Pull complete结尾的每一行都是一个镜像层。可以采用docker image inspect查看到Layers信息。
$ docker image ls inspect centos:7
"Layers": [
"sha256:d69483a6face4499acb974449d1303591fcbb5cdce5420f36f8a6607bda11854"
]
所有的Docker镜像都起始于一个基础镜像层,当进行修改或者增加新的内容时,就会在当前镜像层之上,创建新的镜像层,比如,一个centos:7的镜像,添加了Python包,那么就会在基础镜像层上添加一个镜像层,比如再打了一个安全补丁,又会创建一个新的镜像层。
- Docker镜像含有启动容器所需要的文件系统 及其内容,因此,其用于创建并启动docker容器。
- 采用分层构建机制,最底层为bootfs,其之为rootfs
- bootfs: 用于系统引导的文件系统,包括BootLoader和Kernel,容器启动完成后会被卸载以节约内存资源。
- rootfs: 位于bootfs之上,表现为docker容器的跟文件系统。
- 传统模式中,系统启动时,内核挂载rootfs时会首先将其挂载为"只读"模式,完整性自检完成后将其重新挂载为读写模式。
- docker中,rootfs由内核挂载为“只读”模式,而后通过“联合挂载”技术额外增加一个“可写层”;
- 采用分层构建机制,最底层为bootfs,其之为rootfs
- 位于下层的镜像称为父镜像(parent image),最底层的称为基础镜像(base ima