使用Java控制Docker - 两种方法详解
使用Java控制Docker需要借助Docker客户端库,常用的有Docker Java API和Docker SDK for Java。
以Docker Java API为例,以下是一个简单的Java程序示例,可以使用Docker Java API创建一个容器、启动容器、停止容器和删除容器:
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.core.command.WaitContainerResultCallback;
public class DockerJavaAPIExample {
public static void main(String[] args) throws Exception {
// 创建Docker客户端
DockerClient dockerClient = DockerClientBuilder.getInstance().build();
// 创建一个容器
CreateContainerResponse container = dockerClient.createContainerCmd('nginx')
.withName('my-nginx-container')
.exec();
// 启动容器
dockerClient.startContainerCmd(container.getId()).exec();
// 停止容器
dockerClient.stopContainerCmd(container.getId()).exec();
// 删除容器
dockerClient.removeContainerCmd(container.getId()).exec();
}
}
当然,也可以使用Java程序调用Docker命令行工具来控制Docker。例如,以下是一个Java程序示例,使用Runtime类调用Docker命令行工具:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class DockerCommandExample {
public static void main(String[] args) throws Exception {
// 创建Docker容器
String createContainerCommand = 'docker run -d --name my-nginx-container nginx';
executeCommand(createContainerCommand);
// 停止Docker容器
String stopContainerCommand = 'docker stop my-nginx-container';
executeCommand(stopContainerCommand);
// 删除Docker容器
String removeContainerCommand = 'docker rm my-nginx-container';
executeCommand(removeContainerCommand);
}
private static void executeCommand(String command) throws Exception {
// 执行命令
Process process = Runtime.getRuntime().exec(command);
// 获取命令输出
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待命令执行完成
process.waitFor();
}
}
需要注意的是,使用Java程序调用Docker命令行工具需要确保Docker命令行工具已经安装并配置好了环境变量。
原文地址: https://www.cveoy.top/t/topic/neOU 著作权归作者所有。请勿转载和采集!