overlay2占用磁盘空间-overlay空间不足
overlay2占用磁盘空间
Overlay2 是 Docker 默认的存储驱动,用于管理容器的镜像和文件系统。Overlay2 占用磁盘空间的相关情况如下:

占用空间大的原因
- 容器镜像层叠加:每个容器都有自己的镜像层,其可写层会保存容器所做的所有更改。当多个容器使用相同的只读镜像层时,每个容器的可写层都会保存一份相同文件的副本,导致空间占用增加。
- 镜像更新和删除:当容器镜像被更新或删除时,Overlay2 会保留旧的镜像层并创建新的镜像层以保证容器的可回滚性,这会导致存储占用增加。
- 大量的镜像和容器层累积:每次运行 Docker 容器都会从镜像中创建新的写层,存储容器运行时的文件修改。大量运行或停止未删除的容器会使 Overlay2 目录中的层大量累积,占用大量空间。
- 容器内文件增多:容器内的写操作如应用日志、临时文件等都会写入 Overlay2 的 diff 层。若容器产生大量文件,会导致存储层膨胀。
- 未清理的缓存和未使用的镜像层:Docker 在构建镜像或运行容器时会生成大量缓存数据,在 Overlay2 中存储,若不清理会长期累积占用大量磁盘空间。
查看占用空间的方法
可使用命令
du -h /var/lib/docker/overlay2查看 overlay2 卷中每个 Docker 镜像和容器占用的磁盘空间。减少占用空间的方法
- 清理无用的镜像和容器:可使用
docker image prune命令删除没有被任何容器使用的镜像,使用docker container prune命令清理不再使用的容器,还可使用docker system prune -a命令删除所有未使用的资源,包括容器、镜像、数据卷、网络和构建缓存。 - 清理容器日志:如果是使用中的容器占用空间,需要清理 Docker 容器的日志。先通过
docker inspect {容器名}查看容器日志目录,然后进入日志目录,删除以-json.log结尾的文件。 - 限制容器写层大小:可在 Docker 配置文件
/etc/docker/daemon.json中通过storage-opts配置来限制每个容器的写层大小,如{"storage-opts": ["overlay2.override_kernel_check=true", "overlay2.size=10G"]}会为每个容器的写层分配 10GB 的空间。
