docker-java Docker的java API

docker-java#

docker-java 是 Docker的 Java 版本API Docker

当前的实现基于 Jersey 2.x 因此 classpath 不兼容老版本的 Jersey 1.x !

开发者论坛 docker-java

Changelog

Wiki

版本支持#

Supports a subset of the Docker Remote API v1.37, Docker Server version since 1.12.6

Copy
<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,可以点击这里查看最新版本。

Copy
<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_HOST The Docker Host URL, e.g. tcp://localhost:2376 or unix:///var/run/docker.sock
  • DOCKER_TLS_VERIFY enable/disable TLS verification (switch between http and https protocol)
  • DOCKER_CERT_PATH Path to the certificates needed for TLS verification
  • DOCKER_CONFIG Path for additional docker configuration files (like .dockercfg)
  • api.version The API version, e.g. 1.23.
  • registry.url Your registry's address.
  • registry.username Your registry username (required to push containers).
  • registry.password Your registry password.
  • registry.email Your registry email.

There are three ways to configure, in descending order of precedence:

编程方式配置:#

Copy
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)#

Copy
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:#

Copy
java -DDOCKER_HOST=tcp://localhost:2375 -Dregistry.username=dockeruser pkg.Main

通过 Environment#

Copy
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

测试#

我们来简单测试下:

Copy
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
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

关注作者

欢迎关注作者微信公众号, 一起交流软件开发:欢迎关注作者微信公众号

posted @   JadePeng  阅读(14947)  评论(2编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2011-01-22 10款精选的用于构建良好易用性网站的jQuery插件
2011-01-22 jQuery UI 1.8.9 发布
点击右上角即可分享
微信分享提示
CONTENTS