1
13693261870
2024-12-09 3de9a70c67bd2949e0582a9b5345324d095d237b
se-modules/se-docker/src/main/java/com/se/docker/service/SysDockerService.java
@@ -1,8 +1,8 @@
package com.se.docker.service;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.CreateContainerResponse;
import com.github.dockerjava.api.command.InspectContainerResponse;
import com.github.dockerjava.api.command.*;
import com.github.dockerjava.api.model.PullResponseItem;
import com.github.dockerjava.core.DockerClientBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -51,4 +51,49 @@
            log.error(ex.getMessage(), ex);
        }
    }
    public void s() throws Exception {
        // 获取默认的 Docker Client
        DockerClient dockerClient = DockerClientBuilder.getInstance().build();
        // 拉取镜像
        String image = "openjdk:8-alpine";
        PullImageCmd pullImageCmd = dockerClient.pullImageCmd(image);
        PullImageResultCallback pullImageResultCallback = new PullImageResultCallback() {
            @Override
            public void onNext(PullResponseItem item) {
                System.out.println("下载镜像:" + item.getStatus());
                super.onNext(item);
            }
        };
        pullImageCmd
                .exec(pullImageResultCallback)
                .awaitCompletion();
        System.out.println("下载完成");
        // 创建容器
        CreateContainerCmd containerCmd = dockerClient.createContainerCmd(image);
        CreateContainerResponse createContainerResponse = containerCmd
                .withCmd("echo", "Hello Docker")
                .exec();
        System.out.println(createContainerResponse);
        // 启动容器
        String containerId = "";
        dockerClient.startContainerCmd(containerId).exec();
        // 构建停止容器的命令
        StopContainerCmd stopContainerCmd = dockerClient.stopContainerCmd(containerId);
        // 执行命令
        stopContainerCmd.exec();
        // 删除容器
        dockerClient.removeContainerCmd(containerId).withForce(true).exec();
        // 删除镜像
        dockerClient.removeImageCmd(image).exec();
        // 重启容器
        dockerClient.restartContainerCmd(containerId).exec();
    }
}