新增查看页面

This commit is contained in:
2026-01-27 22:21:55 +08:00
parent fccf05b64c
commit 82ced275b4
2 changed files with 80 additions and 0 deletions

View File

@@ -19,6 +19,7 @@
<dependencies>
<!-- Servlet Api -->
<dependency>
<groupId>jakarta.servlet</groupId>
@@ -32,6 +33,18 @@
<version>4.12.0</version>
</dependency>
<dependency>
<groupId>com.github.docker-java</groupId>
<artifactId>docker-java-transport-okhttp</artifactId>
<version>3.3.4</version>
</dependency>
<dependency>
<groupId>com.github.docker-java</groupId>
<artifactId>docker-java</artifactId>
<version>3.3.4</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>

View File

@@ -0,0 +1,67 @@
package com.jeesite.modules.app.utils;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.CreateContainerResponse;
import com.github.dockerjava.api.model.Container;
import com.github.dockerjava.core.DockerClientBuilder;
import com.github.dockerjava.okhttp.OkDockerHttpClient;
import java.net.URI;
import java.util.List;
public class DockerUtils {
private final DockerClient dockerClient;
public DockerUtils(String dockerIp, int dockerPort) {
String dockerHostStr = String.format("tcp://%s:%d", dockerIp, dockerPort);
URI dockerHost = URI.create(dockerHostStr);
OkDockerHttpClient httpClient = new OkDockerHttpClient.Builder()
.dockerHost(dockerHost)
.connectTimeout(10)
.readTimeout(30)
.build();
this.dockerClient = DockerClientBuilder.getInstance(dockerHostStr)
.withDockerHttpClient(httpClient)
.build();
}
/**
* 获取容器列表 all true=包含停止容器false=仅运行中容器
*/
public List<Container> listContainers(boolean all) {
return dockerClient.listContainersCmd().withShowAll(all).exec();
}
/**
* 创建容器(指定镜像+唯一容器名,后台运行)
*
*/
public String createContainer(String image, String containerName) {
CreateContainerResponse resp = dockerClient.createContainerCmd(image)
.withName(containerName)
.withTty(true) // 分配伪终端,后台运行
.exec();
return resp.getId();
}
/**
* 启动容器支持完整ID/短ID/容器名)
*/
public void startContainer(String containerId) {
dockerClient.startContainerCmd(containerId).exec();
}
/**
* 停止容器支持完整ID/短ID/容器名)
*/
public void stopContainer(String containerId) {
dockerClient.stopContainerCmd(containerId).exec();
}
/**
* 删除容器 true=强制删除运行中的容器false=仅删除停止的
*/
public void removeContainer(String containerId, boolean force) {
dockerClient.removeContainerCmd(containerId).withForce(force).exec();
}
}