Docker4Max compatibility issues with java client libraries

I use test containers to start services for integration testing. I have been unable to make that work directly with docker4mac for now. This forces me to keep docker-machine around until the issue is resolved.

I reported the compatibility issues with the corresponding projects:

The crux of the issue occurs with docker-java :
It seems that implementing docker exec requires a tcp level feature (tcp upgrade procedure) which is not available in jersey/jaxrs and therefore requires netty. Unfortunately netty doesn’t support unix sockets on OS X and the issue has a pretty low priority for the netty project.

the docker-java maintainer asks me if there is any way to talk to docker4mac over https, and I have absolutely no idea :slight_smile: Can someone from docker pitch in in the discussion at docker for mac compatibility · Issue #537 · docker-java/docker-java · GitHub ?

Thanks,
Jean

3 Likes

Currently you can talk to the docker daemon over http on docker.local port 2375. This was not intended to be a permanent feature but there has been demand so we may retain it (and/or move to https).

Would’nt it make sense to implement a port forwarding then, so accessing localhost:2375 redirects to docker.local:2375?

I just got an email from the docker 4 mac team stating :

  • docker.local will no longer work in Beta 9 or later

Do it mean that mean this workaround will no longer work ?

Sadly, that is the case. Since docker.local was removed in beta9, ‘localhost:2372’ works on Windows, but not on OS X. This breaks lots of third party libraries that rely on docker-java; not just testcontainers :frowning:

FYI @richnorth

2 Likes