Ver Fonte

添加一个删除机器中未使用 docker 镜像的接口

reghao há 3 meses atrás
pai
commit
ceb90dc67e

+ 0 - 5
agent/src/main/java/cn/reghao/bnt/agent/task/ImageCleanTask.java

@@ -44,11 +44,6 @@ public class ImageCleanTask implements Runnable {
 
         Map<String, Image> map = docker.images().stream()
                 .collect(Collectors.toMap(Image::getId, image -> image));
-
-        // imageId -> container
-        Map<String, InspectContainerResponse> containerMap = docker.psAll().stream()
-                .collect(Collectors.toMap(InspectContainerResponse::getImageId, response -> response));
-
         List<InspectContainerResponse> list = docker.psAll();
         for (InspectContainerResponse response : list) {
             String imageId = response.getImageId();

+ 3 - 0
agent/src/main/java/cn/reghao/bnt/agent/ws/event/handler/EvtDockerHandler.java

@@ -51,6 +51,9 @@ public class EvtDockerHandler extends Handler {
                 case imageRm -> {
                     dockerService.rmDockerImages(evtDockerOps);
                 }
+                case imageRmUnused -> {
+                    dockerService.rmDockerImagesUnused();
+                }
                 case containerList -> list.addAll(dockerService.getDockerContainers());
                 case containerRm -> {
                     payload.forEach(obj -> {

+ 14 - 0
common/src/main/java/cn/reghao/bnt/common/docker/DockerService.java

@@ -67,6 +67,20 @@ public class DockerService {
                 .collect(Collectors.toList());
     }
 
+    public void rmDockerImagesUnused() {
+        Map<String, Image> map = docker.images().stream()
+                .collect(Collectors.toMap(Image::getId, image -> image));
+        List<InspectContainerResponse> list = docker.psAll();
+        for (InspectContainerResponse response : list) {
+            String imageId = response.getImageId();
+            map.remove(imageId);
+        }
+
+        for (Image image : map.values()) {
+            docker.imageRm(image.getId());
+        }
+    }
+
     public void rmDockerImages(EvtDockerOps evtDockerOps) {
         List<String> imageIds = evtDockerOps.getPayload();
         imageIds.forEach(docker::imageRm);

+ 1 - 3
common/src/main/java/cn/reghao/bnt/common/msg/constant/DockerOps.java

@@ -5,7 +5,5 @@ package cn.reghao.bnt.common.msg.constant;
  * @date 2025-12-16 20:18:53
  */
 public enum DockerOps {
-    imageList, imageRm, containerList, containerRm
-
-
+    imageList, imageRm, imageRmUnused, containerList, containerRm
 }