簡體   English   中英

使用Java客戶端啟動Docker容器時拒絕連接

[英]Connection refused while launching docker containers using java client

我是docker的新手,我想使用java客戶端啟動docker容器,

我嘗試了https://github.com/docker-java/docker-java如下

package containers.launch_containers;

import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.core.DockerClientBuilder;

public class StartContainers{
     DockerClient dockerClient;

    public StartContainers() {
        startContainers();
    }

    public void startContainers() {
           try {

                dockerClient = DockerClientBuilder.getInstance("tcp://127.0.0.1:2375").build();
                //starting the container of hello-world 
                dockerClient.startContainerCmd("hello-world").exec();


    }catch(Exception ex)
           {
             ex.printStackTrace();
           }
    }

    public static void main(String args[])
    {
        StartContainers startContainers=new StartContainers();
    }   
}

在bashrc中設置所需的配置

導出DOCKER_HOST = tcp://127.0.0.1:2375

export DOCKER_OPTS =“-H tcp://127.0.0.1:2375 -H Unix:///var/run/docker.sock”

本地主機中的Docker映像

dockerimages

我有這個例外

javax.ws.rs.ProcessingException:org.apache.http.conn.HttpHostConnectException:連接到127.0.0.1:2375 [/127.0.0.1]失敗:org.glassfish.jersey.apache.connector上的連接被拒絕(連接被拒絕)。 org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:252)的org.glassfish.jersey.client.JerseyInvocation $ 1.call(JerseyInvocation.java:684)的ApacheConnector.apply(ApacheConnector.java:481) org.glassfish.jersey.internal.Errors.process(Errors.java:315)上org.glassfish.jersey.internal.Errors.process $ 1.call(JerseyInvocation.java:681)org.glassfish.jersey.internal.Errors.process (org.glassfish.jersey.internal.Errors.process(Errors.java:228)(org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)處的(Errors.java:297)。 org.glassfish.jersey.client.JerseyInvocation $ Builder.method(JerseyInvocation.java:437)上的glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:681)在org.glassfish.jersey.client.JerseyInvocation $ B com.github.dockerjava.jaxrs.StartContainerCmdExec.execute(StartContainerCmdExec.java:29)的com.github.dockerjava.jaxrs.StartContainerCmdExec.execute(StartContainerCmdExec.java:12)的uilder.post(JerseyInvocation.java:343) .github.dockerjava.jaxrs.AbstrSyncDockerCmdExec.exec(AbstrSyncDockerCmdExec.java:23)位於com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:35)位於com.github.dockerjava.core.command.StartContainerCmdImpl .exec(StartContainerCmdImpl.java:46)在container.launch_containers.StartContainers.startContainers(StartContainers.java:18)在container.launch_containers.StartContainers。(StartContainers.java:10)在container.launch_containers.StartContainers.main(StartContainers.java) :29)

我解決了這個問題,我應該獲得如下容器ID

   dockerClient = DockerClientBuilder.getInstance().build();
    //starting the container    
   CreateContainerResponse container = dockerClient.createContainerCmd("hello-world")
           .withCmd()
           .exec();
   dockerClient.startContainerCmd(container.getId()).exec();
   //stop the container 
   dockerClient.stopContainerCmd(container.getId()).exec();

參考

https://github.com/docker-java/docker-java/wiki

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM