docker-java Docker的java API
docker-java
docker-java 是 Docker的 Java 版本API Docker
当前的实现基于 Jersey 2.x 因此 classpath 不兼容老版本的 Jersey 1.x !
开发者论坛 docker-java
版本支持
Supports a subset of the Docker Remote API v1.37, Docker Server version since 1.12.6
<dependency>
<groupId>com.github.docker-java</groupId>
<artifactId>docker-java</artifactId>
<!-- use latest version https://github.com/docker-java/docker-java/releases -->
<version>3.X.Y</version>
</dependency>
当前最新的版本是3.1.0,可以点击这里查看最新版本。
<dependency>
<groupId>com.github.docker-java</groupId>
<artifactId>docker-java</artifactId>
<version>3.1.0</version>
</dependency>
wiki文档
For code examples, please look at the Wiki or Test cases
配置Docker环境
系统的可配置项及默认值如下:
DOCKER_HOSTThe Docker Host URL, e.g.tcp://localhost:2376orunix:///var/run/docker.sockDOCKER_TLS_VERIFYenable/disable TLS verification (switch betweenhttpandhttpsprotocol)DOCKER_CERT_PATHPath to the certificates needed for TLS verificationDOCKER_CONFIGPath for additional docker configuration files (like.dockercfg)api.versionThe API version, e.g.1.23.registry.urlYour registry's address.registry.usernameYour registry username (required to push containers).registry.passwordYour registry password.registry.emailYour registry email.
There are three ways to configure, in descending order of precedence:
编程方式配置:
DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
.withDockerHost("tcp://my-docker-host.tld:2376")
.withDockerTlsVerify(true)
.withDockerCertPath("/home/user/.docker/certs")
.withDockerConfig("/home/user/.docker")
.withApiVersion("1.30") // optional
.withRegistryUrl("https://index.docker.io/v1/")
.withRegistryUsername("dockeruser")
.withRegistryPassword("ilovedocker")
.withRegistryEmail("dockeruser@github.com")
.build();
DockerClient docker = DockerClientBuilder.getInstance(config).build();
通过Properties (docker-java.properties)
DOCKER_HOST=tcp://localhost:2376
DOCKER_TLS_VERIFY=1
DOCKER_CERT_PATH=/home/user/.docker/certs
DOCKER_CONFIG=/home/user/.docker
api.version=1.23
registry.url=https://index.docker.io/v1/
registry.username=dockeruser
registry.password=ilovedocker
registry.email=dockeruser@github.com
通过System Properties:
java -DDOCKER_HOST=tcp://localhost:2375 -Dregistry.username=dockeruser pkg.Main
通过 Environment
export DOCKER_HOST=tcp://localhost:2376
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=/home/user/.docker/certs
export DOCKER_CONFIG=/home/user/.docker
测试
我们来简单测试下:
DockerClient dockerClient = createClient();
// docker info
Info info = dockerClient.infoCmd().exec();
System.out.print(info);
// 搜索镜像
List<SearchItem> dockerSearch = dockerClient.searchImagesCmd("busybox").exec();
System.out.println("Search returned" + dockerSearch.toString());
// pull
dockerClient.pullImageCmd("busybox:latest").exec(new ResultCallback<PullResponseItem>() {
public void onStart(Closeable closeable) {
}
public void onNext(PullResponseItem object) {
System.out.println(object.getStatus());
}
public void onError(Throwable throwable) {
throwable.printStackTrace();
}
public void onComplete() {
System.out.println("pull finished");
}
public void close() throws IOException {
}
});
// 创建container 并测试
// create
CreateContainerResponse container = dockerClient.createContainerCmd("busybox")
.withCmd("/bin/bash")
.exec();
// start
dockerClient.startContainerCmd(container.getId()).exec();
dockerClient.stopContainerCmd(container.getId()).exec();
dockerClient.removeContainerCmd(container.getId()).exec();
EventsResultCallback callback = new EventsResultCallback() {
@Override
public void onNext(Event event) {
System.out.println("Event: " + event);
super.onNext(event);
}
};
dockerClient.eventsCmd().exec(callback).awaitCompletion().close();
作者:Jadepeng
出处:jqpeng的技术记事本--http://www.cnblogs.com/xiaoqi
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
docker-java Docker的java API的更多相关文章
- Docker Client (another java docker client api)
前一篇提到了docker-java,这里介绍另一个docker client 库,Docker Client 版本兼容 兼容17.03.1~ce - 17.12.1~ce (点 [here][1]查看 ...
- docker的简单搭建(java/tomcat 环境)
1.一副图简单了解下docker的布局,它是虚拟的,docker分为私服.镜像.容器三个模块 一般从私服pull镜像,镜像run一个容器,我们把容器作为一个虚拟服务,里面可以独立运行进程有独立的内网I ...
- ubuntu docker安装与部署java,mysql,nginx镜像
docker 安装与部署java,mysql,nginx docker 配置 安装docker $ sudo apt-get remove docker docker-engine docker.io ...
- Java开发不懂Docker,学尽Java也枉然,阿里P8架构师手把手带你玩转Docker实战
转: Java开发不懂Docker,学尽Java也枉然,阿里P8架构师手把手带你玩转Docker实战 Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一 ...
- [转载]Java 8 日期&时间 API
Java 8 日期和时间 声明 本文转自http://www.journaldev.com/2800/java-8-date-localdate-localdatetime-instant,以mark ...
- Java Hour 67 Java Collection API
本文不是一个大而全的讲述Java Coleection 相关的APi, 而是笔者认为哪些是一个初学者所能够而且必须确切知道的知识点. Collection 一脉 这里有我们比较常用的List<E ...
- Java 8 Date Time API Example Tutorial – LocalDate, Instant, LocalDateTime, Parse and Format
参考 Java 8 Date and Time API is one of the most sought after change for developers. Java has been mis ...
- JAVA JDK 1.6 API中文版.CHM打开chm提示,“ 已取消到该网页的导航”
JAVA JDK 1.6 API中文版.CHM打开chm提示,“ 已取消到该网页的导航” silent fish 装了win7后,打开chm文件,发现很多在xp系统打开正常的chm文件竟然出现问题, ...
- Java中日期时间API小结
Java中为处理日期和时间提供了大量的API,确实有把一件简单的事情搞复杂的嫌疑,各种类:Date Time Timestamp Calendar...,但是如果能够看到时间处理的本质就可以轻松hol ...
- 【Socket编程】Java中网络相关API的应用
Java中网络相关API的应用 一.InetAddress类 InetAddress类用于标识网络上的硬件资源,表示互联网协议(IP)地址. InetAddress类没有构造方法,所以不能直接new出 ...
随机推荐
- EF使用Fluent API配置映射关系
定义一个继承自EntityTypeConfiguration<>泛型类的类来定义domain中每个类的数据库配置,在这个自定义类的构造函数中使用我们上次提到的那些方法配置数据库的映射. 映 ...
- ffmpeg 加载双语字幕
set infile=in.mp4 set subfile1=cn.srt set subfile2=en.srt set subvf1="subtitles=%subfile1%:forc ...
- 修改.bashrc文件PATH变量错误导致系统大部分命令失效
修改.bashrc环境变量,在文件最后添加openssl变量, 本来应该写 export PATH=$PATH:/usr/local/openssl/bin 误写成 export PATH=/usr/ ...
- f11 全屏
function fullScreen() { var el = document.documentElement; var rfs = el.requestFullScreen || el.webk ...
- centos7 nginx图片 服务器可以访问ftp用户上传的图片资源的配置
注:本文参考了csdn:JAVA_DIRECTION的<nginx和ftp搭建图片服务器>一文.在实践中其文在centos7中还是存在缺陷性的 一:前提条件:是成功的安装好了ftp服务器和 ...
- Confluence 6 配置自动备份
希望配置 Confluence 备份: 进入 > 基本配置(General Configuration) > 备份管理(Backup administration). 选择 编辑(Edi ...
- Confluence 6 从关闭的连接中恢复
当数据库服务器进行重启或者因为网络问题导致连接中断.所有在数据库连接池中的连接都会被中断.希望处理这个问题,通常需要 Confluence 进行重启. 但是,数据库连接池中的连接可以通过运行 SQL ...
- 【Web】servlet、filter和listener
一般地,servlet.filter.listener是配置到web.xml中(web.xml 的加载顺序是:context-param -> listener -> filter -&g ...
- 【VBA】数组定义时,括号内的数值n为最大下标,其长度为n+1
定义数组 dim arr(9) as integer注意这是数组的长度为10,而9指的是最大下标值. 所以在redim和赋值的时候要特别小心,防止错位.
- 操作dom获取datatable中的某一行的某一列的数据
需求描述:编辑的时候,点击的那一行,进入后台的验证方法,验证通过后,再进入编辑页面,进入的时候需要把本行<tr>数据中的某一列<td>的值传递过去 思路表述:之前我想的是,给列 ...