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简介相关推荐

  1. Snappy Java API简介

    Snappy是Google开源的压缩/解压缩库.和其他压缩库相比,snappy的压缩率并不是最高的,兼容性也并非最好的.相反,它的诞生旨在以极高的压缩/解压缩速率提供合理的压缩率.Snappy官指出: ...

  2. HBASE的java api简介

    一:创建表 //获取配置 Configuration conf = new Configuration(); //填写配置信息 conf.set("hbase.zookeeper.quoru ...

  3. java编译器使用教程_Java编译器API简介

    今天给大家分享的是Java编译器API简介,文章部分内容摘自[优锐课]学习笔记. Java编译器API Java编译器API是Java模块(称为java.compiler)的一部分.该模块包括语言模型 ...

  4. 【Java 网络编程】TCP API 简介 ( Socket | ServerSocket )

    文章目录 I Socket API 简介 II ServerSocket API 简介 III Socket 数据交互 IV Socket 客户端操作流程 V Socket 服务器端操作流程 VI S ...

  5. akka java api中文_akka入门 (1):akka简介

    这个akka入门系列大量参考了akka文档.主要是翻译+自己的一些理解.这里对akka文档吐一下槽,它的文档初看上去感觉挺详细的.但是很多示例代码都是片段,对初学者来说甚至都无法运行起来,所以我这里会 ...

  6. Hadoop-HDFS 简介以及配置和JAVA API操作

    Hadoop 一.概述 1.1 大数据概念 大数据是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力来适应海量.高增长率和多样化的信息资产.--来自研究机构Gartner 1.2 大数据面 ...

  7. java api 设计_Java API设计实践

    使你的API在模块化和非模块化Java环境中都可用 在优锐课的java学习分享中,对微服务有了更深层次的新概念.关于API设计实践一点就通了. 介绍 了解设计Java API时应应用的一些API设计实 ...

  8. 【Netty】NIO 网络通信 SelectionKey 常用 API 简介

    文章目录 I . SelectionKey 简介 II . SelectionKey 事件简介 III . SelectionKey 常用 API 简介 I . SelectionKey 简介 1 . ...

  9. 技巧: 用 JAXM 发送和接收 SOAP 消息—Java API 使许多手工生成和发送消息方面必需的步骤自动化...

    简介: 在本篇技巧文章中,作者兼开发人员 Nicholas Chase 向您演示如何使用用于 XML 消息传递的 Java API(Java API for XML Messaging (JAXM)) ...

  10. ibm java_IBM i 上Java 虚拟机简介

    Abstract IBM i 上Java 虚拟机简介 Body Java在IT业界有多流行?google上搜索一下java, 结果一目了然(今天早上我搜索到的记录数是840000000条).Java之 ...

最新文章

  1. day21 登录cookie
  2. MVC中HtmlHelper用法大全
  3. 作用域变量 var
  4. 【Linux】一步一步学Linux——lsattr命令(116)
  5. 依赖注入的细节_value子标签_特殊字符的注入
  6. iOS XIB等比例适配
  7. mysql cluster 1186_配置Mysql Cluster时出错Unable to connect with connect string_MySQL
  8. gaster字体转换器_wingdings
  9. IDEA格式化XML中的SQL语句
  10. vue 图片拖拉转放大缩小组件
  11. 信念就是一种观念对不对_思路决定出路 观念决定方向 性格决定命运 要改变命运 先确立信念...
  12. 职场技巧:高效实用的四象限法则
  13. 订单超时、定时任务解决方案和思路
  14. 特征选择(模型输入参数的分析选择)方法汇总
  15. 【数据库基础知识六】内连接、外连接、自连接
  16. onfouce事件与onblur事件
  17. 按钮在 IE 中两边被拉伸的BUG
  18. 利用baostock获取上市公司财务指标
  19. 调研发现,CEO对全球经济增长的悲观情绪创新高
  20. SQL语句操作数据2

热门文章

  1. 如何打造微产业生态链
  2. 在?快来pick你最喜爱的团队!
  3. 给她讲最爱的SpringBoot源码
  4. 告诉你外语学习的真实方法及误区分析(整理)
  5. 【pygame学习_3】变节奏型壁球运动
  6. 论文|翻译——行为数据挖掘(持续更新!)
  7. Linux磁盘管理 df、du、fdisk
  8. 用scons编译STM32F103工程
  9. Excel文档生成方案
  10. GUIBuilder 5.36_万向钱潮2019年盈利5.36亿元下滑25.82% 车产销下降