Traefik Docker provider always tries API v1.24 despite Docker API 1.53

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?

This is an old issue, make sure to use Traefik latest.