Jenkins自动化删除过时Docker镜像全攻略

2026-10-13 0 阅读

在Docker环境中,随着时间的推移,会积累大量的过时镜像,这不仅会占用存储空间,也可能影响镜像管理的效率。Jenkins作为一个强大的自动化工具,可以帮助我们自动化地删除过时的Docker镜像。本文将详细介绍如何使用Jenkins来实现这一功能。

1. 准备工作

在开始之前,请确保以下条件已满足:

  • 已安装Jenkins和Docker。
  • Jenkins可以访问Docker守护进程。
  • 已安装Jenkins的Docker插件。

2. 创建Jenkins任务

2.1 添加Docker插件

  1. 登录Jenkins。
  2. 在“管理Jenkins”页面中,选择“管理插件”。
  3. 在“可选插件”中搜索“Docker”,然后点击“安装”。
  4. 安装完成后,重启Jenkins。

2.2 创建新任务

  1. 在Jenkins首页,点击“新建任务”。
  2. 输入任务名称,例如“Delete Old Docker Images”。
  3. 选择“Freestyle project”。

2.3 配置任务

  1. 在“General”选项卡中,选择“Build a Docker image”或“Execute shell”。
  2. 如果选择“Build a Docker image”,则需要指定Dockerfile路径。
  3. 如果选择“Execute shell”,则需要编写删除过时镜像的shell脚本。

2.4 编写删除过时镜像的脚本

以下是一个使用docker pull和docker rmi命令删除过时镜像的shell脚本示例:

#!/bin/bash

# 设置保留的镜像数量
MAX_IMAGES=5

# 获取所有镜像的ID和标签
IMAGES=$(docker images -q --filter "dangling=false")

# 对每个镜像进行处理
for IMAGE in $IMAGES; do
  # 获取镜像的标签数量
  TAGS=$(docker images ls --format "{{.RepoTags}}" $IMAGE | wc -l)

  # 如果标签数量大于保留的镜像数量,则删除
  if [ $TAGS -gt $MAX_IMAGES ]; then
    docker rmi $IMAGE
  fi
done

将以上脚本保存为delete_old_images.sh,并在Jenkins任务中配置执行此脚本。

3. 定时任务

为了实现自动化删除,可以将Jenkins任务设置为定时任务。在“Build”选项卡中,选择“Add build step”,然后选择“Execute shell”,在命令中输入以下内容:

0 0 * * ? * /path/to/delete_old_images.sh

以上cron表达式表示每天凌晨0点执行脚本。

4. 总结

通过以上步骤,我们可以在Jenkins中实现自动化删除过时Docker镜像的功能。这将有助于优化Docker镜像存储,提高镜像管理的效率。

分享到: