Docker’s -p syntax won’t take a unix socket:
-p=[] : Publish a container᾿s port to the host (format:
ip:hostPort:containerPort | ip::containerPort |
hostPort:containerPort)
One solution would be to:
- Run your container without any
-pspecification, we’ll name it"cont1"(--name cont1) - Run a second container which:
- Bind mounts the unix socket (
-v /tmp/file.sock:/tmp/file.sock) to have it accessible from within the container - Links to the first container (
--link cont1:cont1) to be able to connect to it - Runs a tool such as
socatto route traffic from the unix socket to the"cont1:4444"endpoint
- Bind mounts the unix socket (
I’m not a socat expert, but the address specification you’ll need should look like this: UNIX-LISTEN:/tmp/file.sock,fork,reuseaddr TCP4:cont1:4444