springboot:java操作docker(docker-java)的基本使用

本文详细介绍了如何使用docker-java库,通过XML配置,包括拉取nginx镜像、创建并启动容器、查看容器信息和日志,以及删除容器和镜像的操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dokcer-java使用

xml

引入依赖

<!-- https://mvnrepository.com/artifact/com.github.docker-java/docker-java -->
<dependency>
    <groupId>com.github.docker-java</groupId>
    <artifactId>docker-java</artifactId>
    <version>3.3.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.github.docker-java/docker-java-transport-httpclient5 -->
<dependency>
    <groupId>com.github.docker-java</groupId>
    <artifactId>docker-java-transport-httpclient5</artifactId>
    <version>3.3.0</version>
</dependency>

ping

    DockerClient dockerClient = DockerClientBuilder.getInstance().build();
    PingCmd pingCmd = dockerClient.pingCmd();
    pingCmd.exec();

拉取镜像

这里拉取nginx

public class dockerDemo {
    public static void main(String[] args) throws InterruptedException {
        // 初始参数docker
        DockerClient dockerClient = DockerClientBuilder.getInstance().build();

        String image = "nginx:latest";
        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("下载完成");
    }
}

在这里插入图片描述

在这里插入图片描述

创建容器

String image = "nginx:latest";
// 创建容器
CreateContainerCmd containerCmd = dockerClient.createContainerCmd(image);
CreateContainerResponse createContainerResponse = containerCmd.
        withCmd("echo", "hello Docker") // 启动时自动执行的命令
        .exec();

System.out.println(createContainerResponse);

在这里插入图片描述

在这里插入图片描述

查看所有容器信息

// 获取所有容器
ListContainersCmd listContainersCmd = dockerClient.listContainersCmd(); // 获取容器列表命令
List<Container> containers = listContainersCmd.withShowAll(true).exec(); // 执行,包含未启动的容器
for (Container container : containers) {
    System.out.println(container);
}
String containId = createContainerResponse.getId(); // 获取容器id

在这里插入图片描述

启动容器

DockerClient dockerClient = DockerClientBuilder.getInstance().build();
dockerClient.startContainerCmd(containId).exec(); // 启动容器

查看日志

注意操作是异步的,等待完成。

        // 查看日志
        // 回调函数
        LogContainerResultCallback logContainerResultCallback = new LogContainerResultCallback(){
            @Override
            public void onNext(Frame item) {
                System.out.println("日志" + new String(item.getPayload()));
                super.onNext(item);
            }
        };

        ResultCallback<Frame> exec = dockerClient.logContainerCmd(containId)
                .withStdErr(true) // 打开错误输出
                .withStdOut(true) // 打开标准输出
            .exec(logContainerResultCallback)
                .awaitCompletion(); // 因为是异步的,一定要等待完成,因为是异步的,可能还没查看日志就结束程序了

在这里插入图片描述

删除容器

    // 删除容器
    dockerClient.removeContainerCmd(containId).exec();
    dockerClient.removeImageCmd(containId).withForce(true).exec(); //强转删除
    
    // 删除镜像
    dockerClient.removeImageCmd(image).exec();

删除镜像

dockerClient.removeImageCmd(image).exec();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cosmoshhhyyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值