Java代码查看远程主机上的泊坞窗容器的状态,拒绝连接

我正在使用docker-java库来查看是否可以查看远程服务器上的docker容器的状态。 我已经能够得到它来检查使用此代码的本地docker容器的状态:

DockerClient dc = DockerClientBuilder.getInstance().build(); List<Container> containers = dc.listContainersCmd().withShowAll(true).exec(); for (Container a : containers) { System.out.println(Arrays.toString(a.getNames())); System.out.println(a.getStatus()); } 

但是,当我根据docker-java github页面的Wiki中的示例添加远程服务器的详细信息时,它会返回连接拒绝错误:

 // Changing this line DockerClient dc = DockerClientBuilder.getInstance("tcp://46.101.7.176:2376").build(); // Results in this error: Exception in thread "main" javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to 46.101.7.176:2376 [/46.101.7.176] failed: Connection refused at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:481) at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:252) at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:701) at org.glassfish.jersey.internal.Errors.process(Errors.java:315) at org.glassfish.jersey.internal.Errors.process(Errors.java:297) at org.glassfish.jersey.internal.Errors.process(Errors.java:228) at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444) at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:697) at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:420) at org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:316) at com.github.dockerjava.jaxrs.InfoCmdExec.execute(InfoCmdExec.java:26) at com.github.dockerjava.jaxrs.InfoCmdExec.execute(InfoCmdExec.java:13) at com.github.dockerjava.jaxrs.AbstrSyncDockerCmdExec.exec(AbstrSyncDockerCmdExec.java:23) at com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:35) at main.main(main.java:15) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) Caused by: org.apache.http.conn.HttpHostConnectException: Connect to 46.101.7.176:2376 [/46.101.7.176] failed: Connection refused at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71) at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:435) ... 19 more Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:74) at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:134) ... 28 more 

我在一个数字海洋液滴上运行这个已经被破坏,所以一般的帮助将不胜感激。

注意:当本地成功运行时,所有容器都处于停止状态(只能通过“docker ps -a”命令而不是“docker ps”)看到,所以我无法想象连接拒绝错误是由于没有在设备上监听的活动容器。 docker守护进程在远程机器上运行,但仍然无法通过连接拒绝错误。

这个问题被标记为一个generics的Java错误的可能的重复,但是,因为这是特定于Java,托pipe在服务器上的Java泊坞窗库和泊坞窗,我想保持这个作为一个单独的问题,由于问题和有限的文件可用 – 希望这可以帮助其他人面临类似的问题!