overlay2
是 Docker 默认使用的存储驱动,用于管理容器和镜像的存储。随着容器和镜像的增多,overlay2
目录可能会占用大量磁盘空间。清理 overlay2
目录需要谨慎操作,以避免误删正在使用的容器或镜像。
以下是清理 overlay2
目录的步骤和方法:
1. 确认 overlay2
目录的位置
overlay2
目录通常位于 Docker 的数据根目录下,默认路径为 /var/lib/docker/overlay2
。
sudo du -sh /var/lib/docker/overlay2
- 该命令会显示
overlay2
目录的磁盘使用情况。
2. 清理未使用的容器和镜像
Docker 提供了命令来清理未使用的资源,包括停止的容器、未使用的镜像、悬空的卷和网络。
清理未使用的容器、镜像、卷和网络:
sudo docker system prune -a
-a
:删除所有未使用的镜像(不仅仅是悬空镜像)。- 该命令会提示确认,输入
y
继续。
仅清理悬空镜像:
sudo docker image prune
仅清理停止的容器:
sudo docker container prune
仅清理未使用的卷:
sudo docker volume prune
仅清理未使用的网络:
sudo docker network prune
3. 手动清理 overlay2
目录
如果 docker system prune
无法完全释放空间,可以手动清理 overlay2
目录。但需要确保清理的文件没有被正在运行的容器或镜像使用。
步骤:
停止 Docker 服务:
sudo systemctl stop docker
删除
overlay2
目录中的未使用文件:进入
overlay2
目录:cd /var/lib/docker/overlay2
查找并删除未使用的目录:
sudo find . -type d -empty -delete
启动 Docker 服务:
sudo systemctl start docker
4. 清理日志文件
Docker 的日志文件也可能占用大量磁盘空间。可以清理日志文件以释放空间。
清理容器日志:
查看容器日志大小:
sudo du -sh /var/lib/docker/containers/*/*-json.log
清理日志文件:
清理单个容器的日志:
sudo truncate -s 0 /var/lib/docker/containers/<container_id>/<container_id>-json.log
清理所有容器的日志:
sudo truncate -s 0 /var/lib/docker/containers/*/*-json.log
5. 限制日志大小
为了避免日志文件占用过多空间,可以在启动容器时限制日志大小。
示例:
sudo docker run -d --log-opt max-size=10m --log-opt max-file=3 <image_name>
max-size=10m
:每个日志文件最大为 10MB。max-file=3
:最多保留 3 个日志文件。
6. 检查磁盘空间
清理完成后,检查磁盘空间是否释放:
df -h
注意事项:
- 谨慎操作:手动删除
overlay2
目录中的文件可能会导致数据丢失或容器无法启动。 - 备份数据:在清理之前,建议备份重要数据。
- 避免直接删除:不要直接删除整个
overlay2
目录,否则会导致 Docker 无法正常工作。