使用Docker时,镜像和容器数据都存储在Docker的存储目录中,默认是/var/lib/docker。在Docker使用overlay2存储驱动时,/var/lib/docker/overlay2目录包含了overlay2存储驱动所使用的文件和目录。
overlay2是Docker的一种联合文件系统(Union File System)实现,它允许将多个目录(称为层)合并成一个统一的文件系统。这些层是只读的,除了最上面的容器层是可读写的。
主要目录结构
/var/lib/docker/overlay2/ ├── l/ # 硬链接目录(缩短路径长度) ├── [random-hash]-init/ # 容器初始化层 ├── [random-hash]/ # 镜像层或容器层 │ ├── diff/ # 该层与父层的差异文件 │ ├── link # 硬链接标识文件 │ ├── lower # 父层信息 │ └── work/ # OverlayFS 工作目录 └── [container-id]/ # 容器可写层├── diff/ # 容器的读写变化├── merged/ # 联合挂载的最终视图└── work/
不要手动删除 overlay2 目录中的内容,应使用 Docker 命令进行清理,以免破坏镜像和容器的完整性。
清理和维护
# 查看 overlay2 目录大小 $ du -sh /var/lib/docker/overlay2/# 清理无用的层 $ docker system prune# 强制清理(包括未使用的镜像) $ docker system prune -a