JUnittesting中的Java Docker客户端无法连接到守护进程

我试图自动pipe理我的Docker容器中的应用程序,使用Spotify Docker Client进行与Docker for Mac的集成testing。

DockerClient docker = new DefaultDockerClient.fromEnv().build(); HostConfig hostConfig = HostConfig.builder() .portBindings(new HashMap<String, List<PortBinding>>(){{ put("8080", Arrays.asList(PortBinding.of("localhost", 8080))); }}).build(); ContainerConfig containerConfig = ContainerConfig.builder() .hostConfig(hostConfig) .exposedPorts("8080") .image("my-app") .portSpecs(Arrays.asList("8080:8080")) .build(); ContainerCreation createdContainer = docker.createContainer(containerConfig); 

createContainer调用失败:

 2091 [jersey-client-async-executor-0] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection request: [route: {}->unix://localhost:80][total kept alive: 0; route allocated: 0 of 100; total allocated: 0 of 100] 2091 [jersey-client-async-executor-0] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection leased: [id: 1][route: {}->unix://localhost:80][total kept alive: 0; route allocated: 1 of 100; total allocated: 1 of 100] 2091 [jersey-client-async-executor-0] DEBUG org.apache.http.impl.execchain.MainClientExec - Opening connection {}->unix://localhost:80 2456 [jersey-client-async-executor-0] DEBUG org.apache.http.impl.conn.DefaultHttpClientConnectionOperator - Connecting to localhost/127.0.0.1:80 2476 [jersey-client-async-executor-0] DEBUG org.apache.http.impl.conn.DefaultManagedHttpClientConnection - http-outgoing-1: Shutdown connection 2516 [jersey-client-async-executor-0] DEBUG org.apache.http.impl.execchain.MainClientExec - Socket is not connected java.io.IOException: Socket is not connected at jnr.enxio.channels.NativeSocketChannel.shutdownInput(NativeSocketChannel.java:102) at com.spotify.docker.client.ApacheUnixSocket.shutdownInput(ApacheUnixSocket.java:280) at com.spotify.docker.client.ApacheUnixSocket.close(ApacheUnixSocket.java:273) ... 

由于一些奇怪的地方,stacktrace提到了unix://localhost:80 ,实际上它使用的是socket url unix:///var/run/docker.sock 。 我已经通过debugging器进行了确认。

docker工作完全正常,否则; 我可以通过“curl”连接到套接字,我可以通过terminal正常使用docker。