Jenkins 打包 Docker 后镜像文件自动清理

Jenkins 打包 Docker 后镜像文件自动清理

使用 Jenkins 构建 Docker 容器后,自动清理该构建服务器上未使用容器与镜像,节约磁盘空间

前言

通过 Jenkins 或其他方式进行 CI 后,一般打包的服务器上会存留所有打包好的镜像文件,如果在构建途中失败了,还会存在构建时失败的镜像文件和容器。日积月累下来这些无用的文件会越来越多。并且通过自动化构建好的镜像文件会自动推送到 Harbor 服务器中,本地自然就没有留存的必要了。

清理

对于清理 docker 磁盘空间其自带的命令即可满足

  • 查看 docker 磁盘空间使用:docker system df

  • 清理未使用的容器:docker container prune -f

  • 清理未使用的卷:docker volume prune -f

  • 清理未使用的网络:docker network prune -f

  • 清理未使用的镜像文件:docker image prune -af

注:以上操作均带参数 -f 表示强制的

通过以上命令我们可以有选择的对 docker 进行磁盘空间清理,如果需要一次搞定也有个命令可以使用 docker system prune -af,该命令的作用为删除关闭的容器、无用的数据卷和网络以及未使用的镜像文件

自动清理

在进行 CI 的服务器上通过 crontab 实现自动清理构建后的 docker 相关文件

  1. 添加如下清理脚本到 /etc/cron.weekly/ 目录下,每周清理一次

    /etc/cron.weekly/clean-docker.sh
    1
    2
    #!/usr/bin/sh
    docker system prune -af
  2. 为脚本赋予可执行权限

    1
    # chmod +x /etc/cron.weekly/clean-docker.sh

执行时间说明:

  • /etc/cron.hourly:每小时的01分时执行

  • /etc/cron.daily:为每天4点02分执行

  • /etc/cron.weekly: 为每周日4点22分分执行

  • /etc/cron.monthly:为每月1号的4点02分执行

评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...