在使用Java客户端启动Docker容器时拒绝连接

我是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中设置所需的configuration

导出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。 ApacheConnector.apply(ApacheConnector.java:481)位于org.glassfish.jersey.client.JerseyInvocation的org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:252)$ 1.call(JerseyInvocation.java:684)at org.glassfish.jersey.client.JerseyInvocation $ 1.call(JerseyInvocation.java:681)org.glassfish.jersey.internal.Errors.process(Errors.java:315)at org.glassfish.jersey.internal.Errors.process (Errors.java:297)org.glassfish.jersey.internal.Errors.process(Errors.java:228)org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)at org。在org.glassfish.jersey.client.JerseyInvocation上的glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:681)org.glassfish.jersey.client.JerseyInvocation $ Builder.method(JerseyInvocation.java:437)$ B uilder.post(JerseyInvocation.java:343)at com.github.dockerjava.jaxrs.StartContainerCmdExec.execute(StartContainerCmdExec.java:29)at com.github.dockerjava.jaxrs.StartContainerCmdExec.execute(StartContainerCmdExec.java:12)at com .github.dockerjava.jaxrs.AbstrSyncDockerCmdExec.exec(AbstrSyncDockerCmdExec.java:23)at com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:35)at com.github.dockerjava.core.command.StartContainerCmdImpl .exec(StartContainerCmdImpl.java:46)在containers.launch_containers.StartContainers.startContainers(StartContainers.java:18)位于containers.launch_containers.StartContainers。(StartContainers.java:10)位于containers.launch_containers.StartContainers.main(StartContainers.java :29)

我解决了这个问题,我应该得到如下的Container 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