使用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命令行工具已经安装并配置好了环境变量。

使用Java控制Docker - 两种方法详解

原文地址: https://www.cveoy.top/t/topic/neOU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录