Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 如何清除通过Jenkins CI/CD创建的过时docker映像?_Spring Boot_Docker_Jenkins_Continuous Integration - Fatal编程技术网

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

Spring boot 如何清除通过Jenkins CI/CD创建的过时docker映像?,spring-boot,docker,jenkins,continuous-integration,Spring Boot,Docker,Jenkins,Continuous Integration,如何清除通过Jenkins CI/CD创建的过时docker映像 我创建了一个CI/CD Jenkins管道,它执行以下任务 运行渐变构建。gradle构建完成下一组任务 构建几个springboot微服务 为每个微服务创建docker映像 它将图像推送到私有Docker注册表 执行helm模板以创建/刷新k8s群集中的k8s部署 而整个过程运作良好。我正在为几个场景寻找解决方案 因为它是CI/CD,所以每次代码推送都会触发构建。因此,私有注册表中的docker映像也将被创建,并最终耗尽所有

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

我创建了一个CI/CD Jenkins管道,它执行以下任务

  • 运行渐变构建。gradle构建完成下一组任务
    • 构建几个springboot微服务
    • 为每个微服务创建docker映像
    • 它将图像推送到私有Docker注册表
  • 执行helm模板以创建/刷新k8s群集中的k8s部署
  • 而整个过程运作良好。我正在为几个场景寻找解决方案

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

  • 解决此问题的一种方法是使用不同的jenkins工作,尤其是为了删除旧图像

    这项工作可能会,比如说每晚,每周一次,等等,这取决于你担心自己空间不够用的速度

    关于如何删除图像,请查看带有
    --filter
    选项的
    docker image prune
    命令,如中所述。这将允许您仅删除图像,例如,超过7天的图像等


    希望有帮助

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

  • 找到所有的容器

    docker ps-a-f“你的状况”

  • 然后停止并移除您发现的所有容器 下面的命令

    码头停靠站“集装箱名称” docker rm“容器名称”

  • 找到所有悬空的图像

    docker图像-f“悬挂=真”

  • 删除所有图像

    docker rmi“图像名称”


  • docker image prune用于清除驻留在Jenkins slave上的图像。我想清除私有Docker注册表中的映像。
    Docker
    命令实际上是一个与Docker服务器通信的客户端。现在,是的,在大多数情况下,它与运行在同一个VM中的服务器通信,但是,您可以使用
    docker\u HOST
    env var配置docker客户端连接到的位置-例如,请参见此处:此处的示例如何设置:这适用于VM/机器上的映像,但不适用于docker注册表您的docker注册表是否在创建映像的同一VM/机器上可用?否。docker映像是在中创建的Jenkins从机和被推送到运行在不同VMrefer和answer中的私有注册表,由Yavuz Sert发布