Demo application for docker-socket-manager - a Java library for connecting to Docker daemons over local Unix sockets or remote SSH tunnels.
Local socket - connects to /var/run/docker.sock, fetches Docker info, lists containers, creates an alpine container with a custom env variable, reads it back via exec, then stops and removes the container.
SSH tunnel - connects to a remote Docker host via SSH + automatic socat relay, fetches Docker info and lists running containers.
- Java 17+
- Docker running locally
alpineimage pulled:docker pull alpine- For SSH demo:
socatinstalled on the remote host (sudo apt-get install socat)
Edit src/main/resources/demo.properties:
# Local socket path (default is fine on Linux)
local.socket.path=/var/run/docker.sock
# SSH - fill in your server details
ssh.host=YOUR_HOST
ssh.port=22
ssh.user=YOUR_USER
ssh.private.key.path=/home/YOUR_USER/.ssh/id_rsa
ssh.remote.socket.path=/var/run/docker.sock
ssh.socat.port=2375# Build
mvn package -DskipTests
# Local socket demo
java -jar target/docker-socket-manager-demo-*.jar local
# SSH tunnel demo
java -jar target/docker-socket-manager-demo-*.jar ssh
# Both
java -jar target/docker-socket-manager-demo-*.jar all# Get Docker group ID and put it in .env
echo "DOCKER_GROUP_ID=$(getent group docker | cut -d: -f3)" >> .env
# Local demo
docker compose run --rm demo-local
# SSH demo
docker compose run --rm demo-sshNote: Mounting the Docker socket gives the container full access to the host's Docker daemon. Only use in trusted environments.
<dependency>
<groupId>tech.nomad4</groupId>
<artifactId>docker-socket-manager</artifactId>
<version>0.1.0</version>
</dependency>