docker overlay2是Docker中的存储驱动之一,用于管理镜像和容器层的数据。它使用最小存储空间来存储像层这样的临时数据。
overlay2本质上是多层存储驱动。它将镜像和容器层都视为独立的匿名临时文件系统。然后通过联合挂载将这些层组合成所需的最终文件系统。
overlay2使用两个目录来管理镜像与容器层的数据:
• 一个称为“lowerdir”的底层目录,包含基础层的文件系统。
• 一个称为“upperdir”的上层目录,包含当前容器层的文件系统变更(即diffs)。
当启动容器时,overlay2从底层目录和上层目录构建联合的挂载,以提供给容器文件系统存储驱动。
并且,overlay2还使用一个“merged”目录存储已挂载的最终文件系统的视图。该目录对应当前正在运行的容器的文件系统。
overlay2的主要优点是:
• 空间效率高:它只存储文件系统的变更diffs,可以最大限度的节省空间。
• 容器启动速度快:它不需要在每次启动容器时全量拷贝文件系统。
• 层可共享:底层的基础层可以被多个上层共享,省去重复存储。
• 支持多存储介质:upperdir和lowerdir可以在不同介质上,利于管理和扩展。
综上,docker overlay2存储驱动通过管理lowerdir、upperdir和merged三个目录来提供镜像与容器的文件系统存储与联合挂载。它具有空间和性能优势,是Docker默认的存储驱动选择。
如何清理/var/lib/docker/overlay2?
- 删除不用的镜像
- 检查是否有容器内的服务会往容器内的本地写文件
- 检查各容器的磁盘占用,如果有发现磁盘占用过高的情况则对应处理【原则上如果容器内服务有写文件行为,则写文件的目录应当挂载到宿主机上,而不是直接往容器的本地写