Docker Client (another java docker client api)

前一篇提到了docker-java,这里介绍另一个docker client 库,Docker Client

版本兼容#

兼容17.03.1~ce - 17.12.1~ce (点 [here][1]查看).

下载jar包#

点击 [via Maven][maven-search]搜索和下载最新的jar包.

pom.xml配置如下:

Copy
<dependency> <groupId>com.spotify</groupId> <artifactId>docker-client</artifactId> <version>LATEST-VERSION</version> </dependency>

当前最新的是8.15.0

Copy
<dependency> <groupId>com.spotify</groupId> <artifactId>docker-client</artifactId> <version>8.15.0</version> </dependency>

使用举例#

Copy
// Create a client based on DOCKER_HOST and DOCKER_CERT_PATH env vars final DockerClient docker = DefaultDockerClient.fromEnv().build(); // Pull an image docker.pull("busybox"); // Bind container ports to host ports final String[] ports = {"80", "22"}; final Map<String, List<PortBinding>> portBindings = new HashMap<>(); for (String port : ports) { List<PortBinding> hostPorts = new ArrayList<>(); hostPorts.add(PortBinding.of("0.0.0.0", port)); portBindings.put(port, hostPorts); } // Bind container port 443 to an automatically allocated available host port. List<PortBinding> randomPort = new ArrayList<>(); randomPort.add(PortBinding.randomPort("0.0.0.0")); portBindings.put("443", randomPort); final HostConfig hostConfig = HostConfig.builder().portBindings(portBindings).build(); // Create container with exposed ports final ContainerConfig containerConfig = ContainerConfig.builder() .hostConfig(hostConfig) .image("busybox").exposedPorts(ports) .cmd("sh", "-c", "while :; do sleep 1; done") .build(); final ContainerCreation creation = docker.createContainer(containerConfig); final String id = creation.id(); // Inspect container final ContainerInfo info = docker.inspectContainer(id); // Start container docker.startContainer(id); // Exec command inside running container with attached STDOUT and STDERR final String[] command = {"sh", "-c", "ls"}; final ExecCreation execCreation = docker.execCreate( id, command, DockerClient.ExecCreateParam.attachStdout(), DockerClient.ExecCreateParam.attachStderr()); final LogStream output = docker.execStart(execCreation.id()); final String execOutput = output.readFully(); // Kill container docker.killContainer(id); // Remove container docker.removeContainer(id); // Close the docker client docker.close();

作者:Jadepeng
出处:jqpeng的技术记事本--http://www.cnblogs.com/xiaoqi
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

关注作者

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

posted @   JadePeng  阅读(2879)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.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