package com.se.docker.service;
|
|
import com.github.dockerjava.api.DockerClient;
|
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;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
|
@Service
|
@SuppressWarnings("ALL")
|
public class SysDockerService {
|
//@Value("${docker.prefix}")
|
public String localFilePrefix;
|
|
private static final Logger log = LoggerFactory.getLogger(SysDockerService.class);
|
|
public String test() throws Exception {
|
return "docker: " + System.currentTimeMillis();
|
}
|
|
/**
|
* java DockerClient操作
|
* https://blog.csdn.net/weixin_45198228/article/details/130060333
|
*/
|
public void t() {
|
try {
|
// 创建Docker客户端实例
|
DockerClient dockerClient = DockerClientBuilder.getInstance("unix:///var/run/docker.sock").build();
|
|
// 创建并启动一个新的容器
|
CreateContainerResponse container = dockerClient.createContainerCmd("busybox")
|
.withCmd("echo", "Hello Docker!")
|
.exec();
|
|
// 启动容器
|
dockerClient.startContainerCmd(container.getId()).exec();
|
|
// 检查容器状态
|
InspectContainerResponse inspectContainerResponse = dockerClient.inspectContainerCmd(container.getId()).exec();
|
System.out.println(inspectContainerResponse.toString());
|
|
// 停止并移除容器
|
dockerClient.removeContainerCmd(container.getId()).withRemoveVolumes(true).exec();
|
|
// 关闭Docker客户端
|
dockerClient.close();
|
} catch (Exception ex) {
|
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();
|
}
|
}
|