前言

最近需要使用Jenkins构建新项目,发现构建报错,检查日志发现是磁盘空间不足导致的,于是开始排查磁盘空间为何不足并且清理磁盘不用的数据。

排查过程

一般情况下,Jenkins都是安装在/var/lib/jenkins路径下,相对应产生的一些数据也会存在该路径所对应的挂载点中,那么跟随这个路径的根目录,利用下面命令去查询当前目录的磁盘空间占用情况:

du -sh .

并且通过下面命令去查询当前目录下每个子目录的空间占用情况:

du -sh *

经过排查,发现是Jenkins中用来启动项目的容器Docker占用了几乎所有的磁盘空间,那么接下来清理Docker中的无用数据即可。

清理Docker容器中无用数据

  1. 列出当前正在运行的容器。运行以下命令查看正在运行的容器:
docker ps

这将显示正在运行的容器的列表,包括容器的 ID。

  1. 停止和删除不再需要的容器。对于不再需要的容器,您可以先停止它们,然后再删除它们。运行以下命令停止容器:
docker stop <container_id>

请将 <container_id> 替换为您要停止的容器的实际 ID。运行以下命令删除容器:

docker rm <container_id>

请将 <container_id> 替换为您要删除的容器的实际 ID。

  1. 清理不再使用的镜像。运行以下命令列出所有镜像:
docker images

这将显示所有镜像的列表,包括每个镜像的 ID。

  1. 删除不再需要的镜像。对于不再需要的镜像,可以根据需要使用以下命令删除:
docker rmi <image_id>

请将 <image_id> 替换为您要删除的镜像的实际 ID。注意,删除镜像可能会影响依赖于该镜像的其他容器。

批量删除Docker容器

如果运行的Docker容器比较多,可以使用下面方法进行容器删除。

  1. 清理已停止的容器。运行以下命令列出所有已停止的容器:
docker ps -aq --filter status=exited

这将显示已停止的容器的列表,包括每个容器的 ID。运行以下命令删除已停止的容器:

docker rm $(docker ps -aq --filter status=exited)

这将删除所有已停止的容器,从而释放相关的容器数据所占用的空间。

  1. 清理无用的卷(Volumes)。运行以下命令列出所有未使用的卷:
docker volume ls -qf dangling=true

这将显示未使用的卷的列表,包括每个卷的名称或 ID。运行以下命令删除所有未使用的卷:

docker volume rm $(docker volume ls -qf dangling=true)

这将删除所有未使用的卷,从而释放相关的卷数据所占用的空间。

  1. 清理无用的网络。运行以下命令列出所有未使用的网络:
docker network ls -qf dangling=true

这将显示未使用的网络的列表,包括每个网络的名称或 ID。运行以下命令删除所有未使用的网络:

docker network rm $(docker network ls -qf dangling=true)

这将删除所有未使用的网络,从而释放相关的网络数据所占用的空间。

  1. 清理 Docker 日志文件:Docker 的日志文件可能会占用较大的磁盘空间。您可以尝试清理 Docker 的日志文件,具体操作方式因操作系统而异。在大多数 Linux 系统中,可以使用以下命令来清理 Docker 日志文件:
sudo journalctl --vacuum-size=100M

该命令将保留最近的 100MB 日志并删除其余的。

结果

经过一系列清理后,Jenkins构建项目恢复正常,可以正常使用。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐