Traefik Docker provider always tries API v1.24 despite Docker API 1.53
Environment
- Docker Engine: 29.2.1
- Docker API version: 1.53
- Minimum supported API version: 1.44
- Traefik version: v3.5.6
- OS: Ubuntu 24.04 (Hostinger VPS)
- Deployment: Docker Compose
Problem
Traefik fails to initialize the Docker provider with the following repeated error:
Error response from daemon: client version 1.24 is too old.
Minimum supported API version is 1.44
Logs:
providerName=docker
Failed to retrieve information of the docker client and server host
Important observations
Docker daemon works correctly.
Host test:
curl --unix-socket /var/run/docker.sock http://localhost/version
Result:
ApiVersion: 1.53
MinAPIVersion: 1.44
Version: 29.2.1
Running the same test inside the Traefik container also returns API 1.53.
Therefore:
- Docker daemon is working correctly
- Docker socket is correct
- Traefik container can access the socket
However Traefik still tries to use API v1.24.
Docker context
docker context ls
default
unix:///var/run/docker.sock
Docker daemon
ps aux | grep dockerd
/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Docker socket
ls -l /var/run/docker.sock
srw-rw---- root docker
Traefik container environment variables
docker inspect traefik --format '{{range .Config.Env}}{{println .}}{{end}}'
Result:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
No DOCKER_API_VERSION variable is present.
Traefik Docker Compose configuration
traefik:
image: traefik:v3.5
container_name: traefik
restart: unless-stopped
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.network=proxy"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
Troubleshooting already attempted
- removed DOCKER_API_VERSION variable
- recreated Traefik container
- removed old Traefik images
- pulled latest Traefik image
- recreated the entire Docker Compose stack
- verified Docker API via socket
- verified container environment variables
- verified Docker context
- restarted Docker daemon
The problem persists.
Expected behavior
Traefik should negotiate Docker API automatically and use a compatible version (>=1.44).
Actual behavior
Traefik attempts to communicate with Docker using API v1.24 which is rejected by the daemon.
Question
What could cause Traefik to attempt Docker API v1.24 even though:
- Docker API available is 1.53
- No DOCKER_API_VERSION variable is set
- The Docker socket is correct
- Traefik container is freshly recreated?