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?
- 删除不用的镜像
- 检查是否有容器内的服务会往容器内的本地写文件
- 检查各容器的磁盘占用,如果有发现磁盘占用过高的情况则对应处理【原则上如果容器内服务有写文件行为,则写文件的目录应当挂载到宿主机上,而不是直接往容器的本地写
- 需要应急处理的话可以先进入容器内直接删除容器内可以删除的文件