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

news2024/11/15 15:56:46

文章目录

  • dokcer-java使用
    • xml
    • ping
    • 拉取镜像
    • 创建容器
    • 查看所有容器信息
    • 启动容器
    • 查看日志
    • 删除容器
    • 删除镜像

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();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1622178.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【漏洞复现】通天星CMSV6车载监控平台Login弱口令漏洞

漏洞描述&#xff1a; 通天星CMSV6车载定位监控平台拥有以位置服务、无线3G/4G视频传输、云存储服务为核心的研发团队&#xff0c;专注于为定位、无线视频终端产品提供平台服务&#xff0c;通天星CMSV6产品覆盖车载录像机、单兵录像机、网络监控摄像机、行驶记录仪等产品的视频…

智慧物流时代:数字化转型下的物流新篇章

一、什么是智慧物流&#xff1f; 智慧物流是一种利用先进科技和信息技术优化物流供应链系统的新型模式。以数据为核心&#xff0c;智慧物流通过物联网、云计算、大数据和人工智能等技术手段实现物流信息的全面记录、无缝对接和智能化处理。其核心在于实现物流各环节的精细化、…

春游江淮 | 遇见花海, 郎溪第二届绣球花卉节即将开启

郎溪美迪花世界 各种颜色的绣球花海已初露花容 一团团、一簇簇 或淡粉、或淡紫、或淡蓝 以及各种渐变色的花球 景色可谓是浓淡相宜 在暮春时节 2024中国郎溪第二届绣球花卉节 正式官宣啦 郎溪邀您来遇见花海的浪漫 敬请期待吧 活动主题 花开中国梦,绣球美郎川 活动…

springboot 集成 activemq

文章目录 一&#xff1a;说明二&#xff1a;e-car项目配置1 引入activemq依赖2 application启动类配置消息监听3 application.yml配置4 MQConfig.java 配置类5 ecar 项目中的监听6 junit 发送消息 三&#xff1a;tcm-chatgpt项目配置5 MQListener.java 监听消息 测试启动active…

安卓玩机工具推荐----MTK芯片 简单制作线刷包 备份分区 备份基带 去除锁类 推荐工具操作解析

工具说明 在前面几期mtk芯片类玩机工具中解析过如何无官方固件从手机抽包 制作线刷包的步骤&#xff0c;类似的工具与操作有很多种。演示的只是本人片面的理解与一些步骤解析。mtk芯片机型抽包关键点在于..mt*****txt的分区地址段引导和 perloader临时分区引导。前面几期都是需…

信息化工作人员必备常识7——DNS【域名解析详解】

信息化工作人员必备常识7——DNS【域名解析详解】 前言信息化人员必备常识回顾&#xff08;不想看回顾的直接往下滑哦~&#xff09;pingtelnetnslookup命令ipconfig命令域名 DNS为什么需要DNS解析域名为IP地址&#xff1f;域名解析DNS服务器DNS服务器分类表格 DNS客户端DNS中继…

书生·浦语 大模型(学习笔记-3)茴香豆 --> 零代码搭建你的 RAG 智能助理

目录 一、首先了解什么是RAG 二、RAG的工作原理 三、进一步了解&#xff1a;Vector-DB 四、RAG流程 五、RAG的发展进程&#xff08;三种模式&#xff09; 六、RAG的常见优化方法 七、RAG与微调的区别是什么 八、模型优化方法比较 九、评价测试 十、总结一下 十一、…

网络隔离的最小配置

作者&#xff1a;任云康&#xff0c;青云科技研发工程师 前言 对于项目下的网络隔离&#xff0c;有用户提出了以下疑问&#xff1a; 网络隔离是针对 Pod 的吗&#xff1f;网络隔离的最小配置是什么&#xff1f; 配置后&#xff0c;哪些是可以访问的&#xff0c;哪些是不可以访…

[笔试训练](六)

016 大数加法_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 由于相加超过10要进位&#xff0c;因此需要从从后往前将每个数相加得到tmp&#xff0c;超过10时&#xff0c;该位只放tmp%10后的结果&#xff0c;同时将tmp/10&#xff0c;进入下一位的相加…

冯老师降维打击申论课

冯老师降维打击申论课&#xff0c;以其独到的见解和精湛的教学技巧&#xff0c;将复杂的申论知识变得简单易懂。通过深入浅出的讲解&#xff0c;帮助考生迅速掌握申论精髓&#xff0c;轻松应对考试。课程内容丰富实用&#xff0c;深受考生好评&#xff0c;是备考申论的不二之选…

观鸟,一场真实世界的宝可梦游戏

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 卷圈 姝琦 产品统筹 / bobo 场地支持 / 声湃轩天津录音间 春天来了&#xff0c;是时候出门观鸟了&#xff01; 如果说城市公园20分钟效应是短暂逃离生活压力的手段。 那…

一些常见的Windows命令

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言看版本号查找端口启动程序杀死某个端口查看全部端口看ip进入目录就是总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#x…

MessageBox的模版语法上如何注册事件

目标&#xff1a; 想要在MessageBox中的文本中写一些事件&#xff0c;如何处理 在vue中进行操作&#xff1a; coding // 弹窗提示 this.$confirm({customClass: "add-fail",title: this.$t(add_error),type: error,dangerouslyUseHTMLString: true, // 将消息使用…

21-22 - 线性表的链式存储结构 单链表的具体实现

---- 整理自狄泰软件唐佐林老师课程 文章目录 1. 线性表的链式存储结构1.1 定义1.2 逻辑结构1.3 专业术语的统一 2. 链表的基本概念2.1 单链表中的结点定义2.2 单链表中的内部结构2.3 在目标位置处插入数据元素2.4 在目标位置处删除数据元素 3. 链式存储结构线性表的实现3.1 设…

Git-Gitlab中如何创建项目、创建Repository、以及如何删除项目

目录 概念过程创建项目创建Repository创建分支使用IDEA删除项目 git常用命令基础命令拉取远程代码方式一拉取远程代码方式二 概念 GitLab是一个基于Git的版本控制系统&#xff0c;它提供了一个Web界面&#xff0c;可以让用户更方便地进行代码管理、版本管理、协作开发等工作。G…

嵌入式物联网实战开发笔记-乐鑫ESP32开发环境ESP-IDF搭建【doc.yotill.com】

乐鑫ESP32入门到精通项目开发参考百例下载&#xff1a; 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;4e33 3.1 ESP-IDF 简介 ESP-IDF&#xff08;Espressif IoT Development Framework&#xff09;是乐鑫&#xff08;Espressif Systems&#xff09;为 ESP 系列…

云计算时代,企业面临的云安全风险

如今&#xff0c;随着云计算等新兴科技的发展&#xff0c;不同类型企业间的关联越来越多&#xff0c;它们之间的业务边界已被打破&#xff0c;企业上云成为了大势所趋。云计算应用帮助企业改变了IT资源不集中的状况&#xff0c;同时&#xff0c;数据中心内存储的大量数据信息&a…

R语言使用sjPlot包优雅绘制回归模型的交互效应图

交互作用效应(p for Interaction)在SCI文章中可以算是一个必杀技&#xff0c;几乎在高分的SCI中必出现&#xff0c;因为把人群分为亚组后再进行统计可以增强文章结果的可靠性&#xff0c;进行可视化后可以清晰的表明变量之间的关系。不仅如此&#xff0c;交互作用还可以使用来进…

劳保工具佩戴监测识别摄像机

随着工业生产技术的不断进步和劳动保护意识的提高&#xff0c;劳保工具的佩戴已成为维护工人安全健康的重要环节。为了更好地监测和识别工人是否正确佩戴劳保工具&#xff0c;以及工作场所是否存在安全隐患&#xff0c;智能劳保工具佩戴监测识别摄像机应运而生。这种摄像机结合…

GoLand远程开发IDE:使用SSH远程连接服务器进行云端编程

目录 ⛳️推荐 1. 安装配置GoLand 2. 服务器开启SSH服务 3. GoLand本地服务器远程连接测试 4. 安装cpolar内网穿透远程访问服务器端 4.1 服务器端安装cpolar 4.2 创建远程连接公网地址 5. 使用固定TCP地址远程开发 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&am…