层与联合文件系统(UnionFS & Layers)
Docker 镜像和容器使用分层文件系统(Layered Filesystem)和联合文件系统(UnionFS)来管理文件与目录。理解这些机制有助于优化镜像体积、提升构建速度和运行效率。
1. 镜像分层(Image Layers)
- 每条 Dockerfile 指令都会创建一个镜像层(Layer)
- 镜像层是只读的,便于复用和缓存
- 镜像通过叠加层形成最终可运行的文件系统
示例:
FROM ubuntu:20.04
RUN apt-get update
RUN apt-get install -y python3
COPY . /app
`
生成的镜像层:
- 基础层:
ubuntu:20.04 - 安装更新层:
apt-get update - 安装 Python 层
- 应用代码层:
COPY . /app
2. 容器可写层(Container Writable Layer)
- 容器启动时,在镜像之上增加可写层
- 所有对文件系统的修改(创建、删除、修改)都发生在这一层
- 删除容器时,可写层随之销毁,不影响原镜像
3. 联合文件系统(UnionFS)
UnionFS 是 Docker 实现镜像层叠加的核心技术,它将多个只读层和可写层合并呈现为单一文件系统。
常见 UnionFS 类型:
- AUFS(Advanced Multi-Layered Unification Filesystem)
- OverlayFS / Overlay2(目前主流)
- Btrfs / ZFS(部分高级场景)
4. 优势
- 镜像层复用,提高存储效率
- 构建缓存加速镜像构建
- 容器启动速度快,节省磁盘空间
- 易于版本管理和回滚
掌握 Docker 层与 UnionFS 的原理,将帮助你在构建镜像、优化镜像体积和调试容器时做出更高效的决策。
相关内容
- 构建自定义 Registry 本章节介绍如何搭建和管理 Docker 私有 Registry,包括部署自定义 Registry、配置存储与访问权限、镜像推送与拉取流程,以及安全与备份策略,满...
- 与 Kubernetes 的比较与协作 本章节对比 Docker 与 Kubernetes 的异同点,并讲解两者的协作方式,包括容器管理、编排、服务发现、部署流程和最佳实践,帮助理解容器生态系统中的应...
- Rootless Docker 与安全边界 本章节介绍 Rootless Docker 的使用方法及安全边界管理,包括非 root 容器运行原理、配置步骤、权限限制和网络隔离策略,提升容器安全性并降低宿主...
- 常用命令速查表 本章节提供 Docker 常用命令速查表,包括镜像管理、容器操作、网络配置、卷管理、日志查看及调试命令,帮助开发者快速查找和使用 Docker 命令,提高容器管...
- 参考文档与学习资源 本章节整理 Docker 官方文档、社区资源、教程和示例项目,帮助开发者系统学习 Docker 技术,掌握容器化应用的构建、运行、管理和优化方法。
- 示例项目与练习 本章节提供 Docker 示例项目和练习,包括容器化应用部署、Docker Compose 多服务编排、镜像优化、网络配置和存储管理,帮助开发者通过实战加深对...