Apache Connection Refused when running Docker-client Java API

I am trying to install the Docker-client Remote API library ( https://github.com/spotify/docker-client ) to do some image searches and inspect image data (all in public repositories). I have the boot2docker VM downloaded, installed and running. Commands such as “Docker pull ubuntu” work fine but I would like to do this via a Java program now. I used the Eclipse IDE Egit plugin to import the github project and created a Maven/Java project from the existing Master branch. The source code is completely imported and no errors reported. I then tried writing a simple test:

    final DockerClient docker = DefaultDockerClient.fromEnv().build();
    //docker.pull("busybox");
    List<ImageSearchResult> results = docker.searchImages("ubuntu");
    for (ImageSearchResult res : results) {
        System.out.println(res.getName());
    }

However, when running the code in Eclipse I get the following error:

  • Docker: how to build an image from a non-master branch on Github repository
  • What does docker use for (image) versioning?
  • docker add cache when git checkout same file
  • How to manage secrets in a Microservice / Container / Cloud environment?
  • Creating proper build or deployment chain with Microservices, Docker, Jenkins and GIT
  • How to prevent Dockerfile caching git clone
  • Exception in thread "main" com.spotify.docker.client.DockerException: java.util.concurrent.ExecutionException: javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect
    at com.spotify.docker.client.DefaultDockerClient.propagate(DefaultDockerClient.java:1109)
    at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:1028)
    at com.spotify.docker.client.DefaultDockerClient.searchImages(DefaultDockerClient.java:653)
    at com.spotify.docker.client.main.Test.main(Test.java:28)
    

    I tried setting up an apache server on that port but then I get:

    Exception in thread "main" com.spotify.docker.client.DockerRequestException: Request error: GET http://localhost:2375/v1.12/images/search?term=ubuntu: 404
    at com.spotify.docker.client.DefaultDockerClient.propagate(DefaultDockerClient.java:1100)
    at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:1028)
    at com.spotify.docker.client.DefaultDockerClient.searchImages(DefaultDockerClient.java:653)
    at com.spotify.docker.client.main.Test.main(Test.java:28)
    

    Can anyone tell me what I am supposed to do here to make my search/pull call work? This is my first try with Docker and I’ve searched through the documentation and googled the problem but can’t find anyone with a similar problem.

    Thank you!

    EDIT: I am running docker in Windows 7 via the pre-built VM Boot2Docker. Maybe the Docker daemon running inside that is not accessible from programs outside of the VM such as Eclipse?

    EDIT: solved it by upgrading to v1.6 instead of v1.5 which makes the daemon available in the Windows host. Current problem is that all my API calls are returning “The server failed to respond with a valid HTTP response”

  • How to add new folder to git branch without adding it to master
  • Switched Branch After .gitignore and lost .gitinored files
  • Git diff fails on file with underscore in path
  • Git merge & adding change id
  • How to install TortoiseGit without admin rights?
  • Completely remove (old) git commits from history
  • 3 Solutions collect form web for “Apache Connection Refused when running Docker-client Java API”

    I encountered a similar issue and I managed to solve this issue by using the following way, to build up the DockerClient:

    final DockerClient docker = DefaultDockerClient.builder()
                        .uri(URI.create("unix:///var/run/docker.sock"))
                        .build();
    

    I had been getting the same exception but adding the above URI part helped me to solve the issue.
    A better explanation for a issue similar to the above and how to solve it has been provided in the following issue tracker.

    https://github.com/spotify/docker-maven-plugin/issues/61

    The Java program does essentially a docker search: that can only work in an environment where the docker engine is present.

    Either in the boot2docker VM.
    Or in a full Linux host.

    I did encounter the same problem on Mac with eclipse and Docker version 1.10.3, I did search for a solution before I settled for a workaround – Using docker CLI docker-manager to create a new virtualbox and get the DOCKER_HOST and DOCKER_CERT_PATH values of that virtualbox and create a new builder.

    In my case: I have created a virtual box default2 using docker CLI command docker-machine create -d virtualbox default2

    Docker CLI

    $ docker-machine env
    export DOCKER_TLS_VERIFY="1"
    export DOCKER_HOST="tcp://192.168.99.103:2376"
    export DOCKER_CERT_PATH="/Users/XXXX/.docker/machine/machines/default2"
    export DOCKER_MACHINE_NAME="default2"
    

    Docker-client JAVA

    DockerCertificates defaultCertificates = new DockerCertificates(Paths.get("/Users/XXXX/.docker/machine/machines/default2"));    
    DockerClient docker = DefaultDockerClient.builder()
                    .uri("https://192.168.99.103:2376")
                    .dockerCertificates(defaultCertificates)
                    .build();
    
    Git Baby is a git and github fan, let's start git clone.