docker-java Docker的java API

摘要:
Docker javadocker java是Docker的java版本。APIDocker的当前实现基于Jersey 2.x,因此类路径与Jersey 1.x的旧版本不兼容!

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

<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_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:

编程方式配置:

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》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Log4j乱码Android 7.1 GUI系统-窗口管理WMS-Surface管理(四)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

OpenShift实战(一):OpenShift安装

1.1 服务器基本信息   本次安装采用一个master、5个node、3个etcd,node节点两块硬盘,60G磁盘用于docker storage,xxx改为自己的域名或主机名 节点/主机名 功能 IP 内存 磁盘 CPU      master1.xxx.net Master节点 192.168.10.110 16G 40G 8C nod...

【干货最详细】Jmeter + Grafana + InfluxDB 性能测试监控平台搭建

  1、首先我们需要了解Jmeter 相信做it的没有人不知道jemter 就算没用过但是至少是听说过的 1.1 Jmeter的基本介绍 官网:https://jmeter.apache.org/ Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。...

docker下安装mysql镜像

一、拉取mysql镜像 docker pull mysql 二、启动容器,并把配置文件和数据文件挂在到本地磁盘,MYSQL_ROOT_PASSWORD:配置root默认密码 docker run -di --name mysql -p 3306:3306 -v D:mysqlconf:/etc/mysql/conf.d -v D:mysqldata:/va...

Docker快速指南

Docker使用Go语言开发,基于Linux内核的cgroup、namespace以及AUFS等技术对进程进行封装隔离,是一种操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。 Docker则使用宿主机内核提供的隔离机制创建沙盒环境,容器内的应用进程直接运行于宿主的内核。 因为容器内没有虚拟硬件和内核,容器在启动时间、...

Docker 镜像加速

安装docker # yum -y install yum-utils device-mapper-persistent-data lvm2 # yum-config-manager -y --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # yum -...

宿主机ssh免密登录docker容器

一、检查系统内核 二、安装docker        1.yum install docker  -y        2.docker version                    #查看docker版本        3.systemctl restart docker     #启动docker服务        4.groupadd doc...