Docker-java api简介
1. 简介
最近有项目需要用java去操作docker,以前有过python-docker的经历,发现确实python更加好用一些,docker-java的api确有一些坑爹的地方。
2. 导入MAVEN依赖
搜maven repository 去maven网站,Maven Repository: Search/Browse/Explore (mvnrepository.com)https://mvnrepository.com/
然后搜索 docker-java,选一个你喜欢的版本
3. 连接到docker daemon
package com.xxx.dao.docker;import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.core.DockerClientBuilder;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class BaseDockerClientProxy {private DockerClient dockerClient;@Value("${docker.host}")private String serverUrl;//等同于 : private String serverUrl="tcp://host:2375"//因 此 : 你得保证你的host服务器的docker daemon是开放2375的 @Autowiredpublic void setDockerClient() {// 这里就是获取dockerClient的方法了dockerClient = DockerClientBuilder.getInstance(serverUrl).build();}public DockerClient getDockerClient() {return dockerClient;}}
后续的所有操作,都是基于dockerClient进行的。
4. 创建一个容器
@Override
public String createContainer_() {//给定一个容器的名字name_ = "n4";//这里是容器的初始化命令List<String> cmds = new ArrayList<>();cmds.add("/bin/bash");cmds.add("-c");cmds.add("python -m http.server 8092");//cmd也可以通过数组传进去,下面的创建容器的方法中//.withCmd()可以接受可变长度参数String...和List<String>两种// 因此也可以定义cmds是下面这种形式:// String[] cmds = new String[] { "/bin/bash/", "-c", "python -m http.server 8092" }// 然后// .withCmd(cmds)// 当然也可以是下面这种格式:// .withCmd("/bin/bash/", "-c", "python -m http.server 8092")/**类似的,几乎所有的.with方法都包含了一个List<T>参数或者可变长度的T....withPortBindings()有个小坑,我用python的时候,这个很简单,但是java却不是当在该方法中指定了映射后,还要把端口暴漏出去,因此要和.withExposedPorts()一起使用即:.withPortBindings(PortBinding.parse("8090:8092"), PortBinding.parse("8091:8093")).withExposedPorts(ExposedPort.tcp(8092), ExposedPort.tcp(8093))*/// 创建容器CreateContainerResponse container = dockerClient.createContainerCmd("python").withName(name_).withCmd(cmds).withHostName("n4")// 这里也可以接受List<String>参数.withEnv("env1=env1", "env2=env2")// 注意!这是绑定目录映射的,// 目录映射不应该使用 .withVolumes()方法,这是在容器内部创建文件夹/卷的.withBinds(Bind.parse("/data:/data"), Bind.parse("/tmp:/tmp")).withPortBindings(PortBinding.parse("8090:8092"), PortBinding.parse("8091:8093")).withExposedPorts(ExposedPort.tcp(8092), ExposedPort.tcp(8093)).withWorkingDir("/root").exec();dockerClient.startContainerCmd(container.getId()).exec();return "succ";
}
Docker-java api简介相关推荐
- Snappy Java API简介
Snappy是Google开源的压缩/解压缩库.和其他压缩库相比,snappy的压缩率并不是最高的,兼容性也并非最好的.相反,它的诞生旨在以极高的压缩/解压缩速率提供合理的压缩率.Snappy官指出: ...
- HBASE的java api简介
一:创建表 //获取配置 Configuration conf = new Configuration(); //填写配置信息 conf.set("hbase.zookeeper.quoru ...
- java编译器使用教程_Java编译器API简介
今天给大家分享的是Java编译器API简介,文章部分内容摘自[优锐课]学习笔记. Java编译器API Java编译器API是Java模块(称为java.compiler)的一部分.该模块包括语言模型 ...
- 【Java 网络编程】TCP API 简介 ( Socket | ServerSocket )
文章目录 I Socket API 简介 II ServerSocket API 简介 III Socket 数据交互 IV Socket 客户端操作流程 V Socket 服务器端操作流程 VI S ...
- akka java api中文_akka入门 (1):akka简介
这个akka入门系列大量参考了akka文档.主要是翻译+自己的一些理解.这里对akka文档吐一下槽,它的文档初看上去感觉挺详细的.但是很多示例代码都是片段,对初学者来说甚至都无法运行起来,所以我这里会 ...
- Hadoop-HDFS 简介以及配置和JAVA API操作
Hadoop 一.概述 1.1 大数据概念 大数据是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力来适应海量.高增长率和多样化的信息资产.--来自研究机构Gartner 1.2 大数据面 ...
- java api 设计_Java API设计实践
使你的API在模块化和非模块化Java环境中都可用 在优锐课的java学习分享中,对微服务有了更深层次的新概念.关于API设计实践一点就通了. 介绍 了解设计Java API时应应用的一些API设计实 ...
- 【Netty】NIO 网络通信 SelectionKey 常用 API 简介
文章目录 I . SelectionKey 简介 II . SelectionKey 事件简介 III . SelectionKey 常用 API 简介 I . SelectionKey 简介 1 . ...
- 技巧: 用 JAXM 发送和接收 SOAP 消息—Java API 使许多手工生成和发送消息方面必需的步骤自动化...
简介: 在本篇技巧文章中,作者兼开发人员 Nicholas Chase 向您演示如何使用用于 XML 消息传递的 Java API(Java API for XML Messaging (JAXM)) ...
- ibm java_IBM i 上Java 虚拟机简介
Abstract IBM i 上Java 虚拟机简介 Body Java在IT业界有多流行?google上搜索一下java, 结果一目了然(今天早上我搜索到的记录数是840000000条).Java之 ...
最新文章
- day21 登录cookie
- MVC中HtmlHelper用法大全
- 作用域变量 var
- 【Linux】一步一步学Linux——lsattr命令(116)
- 依赖注入的细节_value子标签_特殊字符的注入
- iOS XIB等比例适配
- mysql cluster 1186_配置Mysql Cluster时出错Unable to connect with connect string_MySQL
- gaster字体转换器_wingdings
- IDEA格式化XML中的SQL语句
- vue 图片拖拉转放大缩小组件
- 信念就是一种观念对不对_思路决定出路 观念决定方向 性格决定命运 要改变命运 先确立信念...
- 职场技巧:高效实用的四象限法则
- 订单超时、定时任务解决方案和思路
- 特征选择(模型输入参数的分析选择)方法汇总
- 【数据库基础知识六】内连接、外连接、自连接
- onfouce事件与onblur事件
- 按钮在 IE 中两边被拉伸的BUG
- 利用baostock获取上市公司财务指标
- 调研发现,CEO对全球经济增长的悲观情绪创新高
- SQL语句操作数据2