zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    安全检测点的一些梳理——待长期整理
    Tor真的匿名和安全吗?——如果是http数据,则在出口节点容易被嗅探明文流量,这就是根本问题
    prefixspan是挖掘频繁子序列,子序列不一定是连续的,当心!!!
    spark mllib prefixspan demo
    spark 2.4 java8 hello world
    有效的括号序列——算法面试刷题4(for google),考察stack
    相似的RGB颜色——算法面试刷题3(for google),考察二分
    回文的范围——算法面试刷题2(for google),考察前缀和
    最长绝对文件路径——算法面试刷题1(google),字符串处理,使用tree遍历dfs类似思路
    比较全面的gdb调试命令
  • 原文地址:https://www.cnblogs.com/xiaoqi/p/docker-java.html
Copyright © 2011-2022 走看看