Docker Image
- Docker镜像中含有启动容器所需要的文件系统及其内容,用于创建并启动Docker容器
采用分层构建机制: 最底层为bootfs, 其次为rootfs
bootfs: (lxc, aufs/btrfs,kernel)
- 用于系统引导的文件系统
- 包括bootloader和kernel
- 容器启动完成后会被卸载以节约内存资源
rootfs: 位于bootfs之上,表现为Docker容器的根文件系统 (/dev, /proc, /bin, /etc, /usr, /tmp)
- 在传统模式中,系统启动之时,内核挂载rootfs时,会首先挂载为"只读"模式 ,完整性自检完成后重新挂载为读写模式
- 在Docker中,rootfs由内核挂载为"只读"模式,然后通过"联合挂载"技术额外挂载一个"可写"层
Docker Image Layer
- 位于下层的镜像为父镜像parent image
- 最底层的为基础镜像base image
- 最上层为"可读写"层,下面都是"只读"层
Aufs
- aufs: advanced multi-layered unification filesystem,高级多层统一文件系统
- 用于为Linux文件系统实现 "联合挂载"
- aufs是UnionFS的重新实现
- Docker最初使用aufs作为容器文件系统层,目前作为存储后端之一来支持
Docker的分层镜像,在aufs之外还支持btrfs,devicemapper和vfs等
- 在Ubuntu系统下,Docker默认使用Ubuntu的aufs
- 在CentOS7下,Docker使用的是devicemapper
目前,overlayfs逐渐代替了aufs,overlayfs从3.18版本开始合并到Linux内核中
Docker Registry
- 启动容器时 ,Docker Daemon会从本地获取相关镜像
- 本地镜像不存在时,就从Registry中下载该镜像并保存到本地