Browse Source

update DockerTest

reghao 1 year ago
parent
commit
a92da34404
1 changed files with 38 additions and 5 deletions
  1. 38 5
      web/src/test/java/cn/reghao/bnt/web/devops/DockerTest.java

+ 38 - 5
web/src/test/java/cn/reghao/bnt/web/devops/DockerTest.java

@@ -1,11 +1,17 @@
 package cn.reghao.bnt.web.devops;
 
+import cn.reghao.bnt.common.docker.Docker;
 import cn.reghao.bnt.common.docker.DockerImpl;
-import com.github.dockerjava.api.model.Container;
+import cn.reghao.bnt.common.docker.po.ContainerInfo;
+import cn.reghao.bnt.common.docker.po.ImageInfo;
+import cn.reghao.jutil.jdk.thread.ThreadPoolWrapper;
 import org.junit.Test;
 
 import java.util.*;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * @author reghao
@@ -33,9 +39,36 @@ public class DockerTest {
     public void dockerTest() {
         DockerImpl docker = new DockerImpl();
 
-        List<Container> list = docker.ps(true);
-        list.forEach(container -> {
-            container.getId();
-        });
+        Map<String, ImageInfo> map = docker.images().stream().collect(Collectors.toMap(ImageInfo::getImageId, info -> info));
+        List<ContainerInfo> containerInfos = docker.psAll();
+        for (ContainerInfo containerInfo : containerInfos) {
+            String imageId = containerInfo.getImageId();
+            ImageInfo imageInfo = map.remove(imageId);
+        }
+        //map.keySet().forEach(docker::imageRm);
+
+        ImageCleanTask cleanTask = new ImageCleanTask(docker);
+        ScheduledExecutorService threadPool = ThreadPoolWrapper.scheduledThreadPool("image-cleaner", 1);
+        threadPool.scheduleAtFixedRate(cleanTask, 1, 12, TimeUnit.HOURS);
+    }
+
+    class ImageCleanTask implements Runnable {
+        private Docker docker;
+
+        public ImageCleanTask(Docker docker) {
+            this.docker = docker;
+        }
+
+        @Override
+        public void run() {
+            Map<String, ImageInfo> map = docker.images().stream().collect(Collectors.toMap(ImageInfo::getImageId, info -> info));
+            List<ContainerInfo> containerInfos = docker.psAll();
+            for (ContainerInfo containerInfo : containerInfos) {
+                String imageId = containerInfo.getImageId();
+                ImageInfo imageInfo = map.remove(imageId);
+            }
+
+            //map.keySet().forEach(docker::imageRm);
+        }
     }
 }