Skip to content

Both Apache and ZeroDep clients ignore socket URLs #2322

Closed
@fedinskiy

Description

@fedinskiy

I am running podman, which handles connections over unix socket on unix:///run/user/1000/podman/podman.sock. When I create a new instance of a DockerClientImpl, I provide an URI for this socket as a dockerHost parameter for both DefaultDockerClientConfig and ApacheDockerHttpClient(or ZerodepDockerHttpClient)[1]. For some reason, both http clients ignore this parameter and try to connect to "unix://localhost:2375" instead[2], where podman is not serving anything by default (since this is not recommended as not safe[3]).

This behaviour breaks both promise to work with podman while its "compatibility level works correctly" [3] and the description of supported transports[4], where both ZeroDep and ApacheHttp are described as having "Unix sockets support".

[1]

DefaultDockerClientConfig dockerClientConfig = DefaultDockerClientConfig.createDefaultConfigBuilder()
        .build();
URI dockerHost = dockerClientConfig.getDockerHost();
System.out.println("Docker is on " + dockerHost);
ApacheDockerHttpClient dockerHttpClient = new ApacheDockerHttpClient.Builder()
        .dockerHost(dockerHost)
        .sslConfig(dockerClientConfig.getSSLConfig()).build();
dockerClientInstance = DockerClientImpl.getInstance(dockerClientConfig, dockerHttpClient);

[2] https://github.com/docker-java/docker-java/blob/main/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/ApacheDockerHttpClientImpl.java#L70
[3] https://proofnet.de/publikationen/podman_tcp_api.html
[4] #1423
[5] https://github.com/docker-java/docker-java/blob/main/docs/transports.md

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions