如何清除通过Jenkins CI / CD创建的过时的docker映像?

时间:2019-06-03 04:06:29

标签: spring-boot docker jenkins continuous-integration

如何清除通过Jenkins CI / CD创建的过时的docker映像?

我创建了CI / CD Jenkins管道,该管道完成以下任务

  1. 运行gradle构建。 gradle构建会执行下一组任务
    • 构建多个springboot微服务
    • 为每个微服务创建一个docker镜像
    • 它将图像推送到私有Docker注册表中
  2. 执行头盔模板以创建/刷新k8s集群中的k8s部署。

虽然整个过程运行良好。我正在寻找一些方案的解决方案。

  1. 由于它是CI / CD,因此每次代码推送都会触发构建。因此,私有注册表中的docker镜像也会被创建,并最终耗尽所有磁盘空间。如何有条件清除docker映像?
  2. 如果开发了使用docker REST API清除脚本的脚本,该如何有条件地跳过以删除某些映像(例如:与标记的Jenkins版本相关的映像)
  3. 此任务有任何建议或标准吗?

2 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是进行其他詹金斯工作,尤其是为了删除较旧的图像。

这项工作可能trigger on some appropriate schedule,例如每晚,每周一次,依此类推,具体取决于您担心空间用尽的速度。

关于如何删除图像,请使用docker image prune选项查看--filter命令,如this answer中所述。这样一来,您只能删除图像,例如,超过7天的图像,等等。

希望有帮助!

答案 1 :(得分:0)

我认为下面应该是前进的方式

  1. 查找所有容器

    docker ps -a -f“您的条件”

  2. 然后停止并删除找到的所有容器 下面的命令

    docker停止“容器名称” docker rm“容器名称”

  3. 找到所有悬空的图像

    docker images -f“ dangling = true”

  4. 删除所有图像

    docker rmi“映像名称”