新增查看页面
This commit is contained in:
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
|
|
||||||
<!-- Servlet Api -->
|
<!-- Servlet Api -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>jakarta.servlet</groupId>
|
<groupId>jakarta.servlet</groupId>
|
||||||
@@ -32,6 +33,18 @@
|
|||||||
<version>4.12.0</version>
|
<version>4.12.0</version>
|
||||||
</dependency>
|
</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>
|
<dependency>
|
||||||
<groupId>com.google.code.gson</groupId>
|
<groupId>com.google.code.gson</groupId>
|
||||||
<artifactId>gson</artifactId>
|
<artifactId>gson</artifactId>
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user