K8S学习之前站五:清理docker的overlay2 目录

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 目录。但需要确保清理的文件没有被正在运行的容器或镜像使用。

步骤:
  1. 停止 Docker 服务:

    复制代码
    sudo systemctl stop docker
  2. 删除 overlay2 目录中的未使用文件:

    • 进入 overlay2 目录:

      复制代码
      cd /var/lib/docker/overlay2
    • 查找并删除未使用的目录:

      复制代码
      sudo find . -type d -empty -delete
  3. 启动 Docker 服务:

    复制代码
    sudo systemctl start docker

4. 清理日志文件

Docker 的日志文件也可能占用大量磁盘空间。可以清理日志文件以释放空间。

清理容器日志:
  1. 查看容器日志大小:

    复制代码
    sudo du -sh /var/lib/docker/containers/*/*-json.log
  2. 清理日志文件:

    • 清理单个容器的日志:

      复制代码
      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 无法正常工作。
相关推荐
吴声子夜歌6 分钟前
Kubernetes权威指南——Kubernetes安装配置指南(二进制文件安装)
容器·kubernetes
江华森31 分钟前
Kubernetes集群部署实战:使用kubeadm在4台ECS服务器上搭建K8s v1.31集群
云原生·容器·kubernetes
闲云自留地1 小时前
K8s Ingress 全解:ingress-nginx 部署、域名路径路由、HTTPS 限流灰度一篇通
nginx·https·kubernetes
comyccccc1 小时前
STM32F407VET6核心板的部分电路绘制学习笔记
笔记·stm32·学习
SelectDB技术团队1 小时前
ClickHouse 支持存算分离吗?Doris 社区版原生存算分离怎么落地
数据库·clickhouse·云原生·开源·apache doris·技术选型·存算分层
叼烟扛炮1 小时前
Linux 学习笔记(三十六):并发进阶——读写锁 vs 自旋锁,到底怎么选?
linux·运维·服务器·笔记·学习
正经教主1 小时前
【FDE系列】阶段2:Day 43(UP详细版):Docker Compose — 多容器一键编排
运维·docker·容器
是隼人2 小时前
buuctf-pwn [极客大挑战 2019]Not Bad(orw+jmp)题解(学习过程持续更新)
学习·安全·pwn入门·ctf入门
csdn_aspnet2 小时前
构建、运行与管理容器的 18 个常用 Docker 命令
docker·容器·eureka·command
木雷坞2 小时前
AnythingLLM Docker部署:中文资料上传后无引用的检查路径
运维·docker·容器