Docker镜像分层是Docker的核心设计机制,它通过联合文件系统(UnionFS) 将镜像划分为多个只读层(Layers) ,这些层按顺序堆叠形成完整的文件系统视图。以下是其核心要点:
🔧 一、分层结构原理
层级组成
基础层(Base Layer):通常是操作系统的最小化环境(如Ubuntu、Alpine),提供根文件系统(/bin、/etc等目录),不包含内核(复用宿主机内核)[citation:1][citation:3][citation:5]。
依赖层(Dependency Layers):由Dockerfile中的指令(如RUN apt-get install)生成,安装软件包或库[citation:2][citation:4]。
应用层(Application Layer):包含代码、配置文件等(如COPY . /app),位于最顶层[citation:3][citation:6]。
可写容器层(Container Layer):容器启动时动态添加的唯一可写层,存储运行时修改(如日志、临时文件),通过写时复制(Copy-on-Write) 机制实现修改隔离[citation:3][citation:4][citation:5]。
只读性与堆叠
所有镜像层不可修改,修改操作会复制文件到容器层进行变更[citation:1][citation:5]。
联合文件系统将多层只读文件系统合并为单一视图,用户感知为完整目录结构[citation:3]。
⚡ 二、分层设计的核心优势
存储优化
资源共享:多个镜像共享相同基础层(如所有基于ubuntu:20.04的镜像共用基础层),减少磁盘占用[cit