How to fix Error response from daemon: client version X.XX is too old. Minimum supported API version is X.XX in Docker
This error occurs when your Docker client uses an older API version than the minimum supported by the Docker daemon. Common after Docker Engine 29.0 upgrade which raised the minimum API to v1.44. Fix by updating the client, lowering daemon's minimum API, or using DOCKER_API_VERSION.
Quick fix
Fixes Error response from daemon: client version X.XX is too old. Minimum supported API version is X.XX
docker version- Check current API versions
- Option 1: Update Docker client to match server
- Option 2: Lower the daemon's minimum API version
- Option 3: Set DOCKER_API_VERSION on the client
docker versionError response from daemon: client version X.XX is too old. Minimum supported API version is X.XX
What this error means
When Docker commands are executed, the Docker client communicates with the Docker daemon through a REST API. Both the client and daemon support specific API versions, and version negotiation occurs automatically to find a compatible version they can both speak. The "client version is too old" error indicates that your Docker client is trying to use an API version that the Docker daemon no longer supports. This became a widespread issue with Docker Engine 29.0.0 (released in 2025), which raised the minimum supported API version from v1.24 to v1.44, effectively requiring Docker clients to be version 25.0 or newer. This error commonly affects: - **CI/CD pipelines** using older Docker-in-Docker images or Docker clients - **Third-party tools** like Traefik, Portainer, or Testcontainers that use older Docker SDKs - **Remote Docker setups** where the client and server versions are mismatched - **Development environments** after a Docker daemon upgrade without upgrading the client The mismatch can occur in either direction - a client that's too old for the server, or less commonly, a server that's too old for the client.
Typical symptoms
- Docker commands fail with 'Error response from daemon: client version X.XX is too old'
- Error mentions 'Minimum supported API version is 1.44' (or another version)
- CI/CD pipelines fail after Docker engine auto-update
- Traefik, Portainer, or other container management tools stop discovering containers
- docker-compose or docker compose commands fail with API version errors
- Testcontainers tests fail with API compatibility errors
- Docker SDK-based applications stop working after daemon upgrade
- Remote Docker connections from older clients fail
Common causes
- Docker Engine upgraded to version 29.0+ which requires API v1.44 minimum (most common)
- Docker-in-Docker (DIND) image auto-updated to 29.x while client remains on older version
- Third-party tools using older Docker SDK versions incompatible with new daemon
- Client and server Docker versions significantly mismatched
- CI/CD runner using floating Docker image tags that auto-updated
- DOCKER_API_VERSION environment variable set to an unsupported version
- Using an outdated Docker client binary with a newer daemon
- Container orchestration tools not updated after daemon upgrade
How to fix "Error response from daemon: client version X.XX is too old. Minimum supported API version is X.XX"
First, identify exactly which API versions your client and server support:
docker versionThis shows both client and server versions with their API versions:
Client:
Version: 24.0.7
API version: 1.43
...
Server:
Engine:
Version: 29.0.0
API version: 1.48 (minimum version 1.44)
...In this example, the client supports API 1.43 but the server requires minimum 1.44, causing the error.
If docker version itself fails, the client cannot even negotiate with the server. Check what version you have:
docker --version
which dockerThe cleanest solution is to update your Docker client to a version that supports the required API.
On Linux (Ubuntu/Debian):
# Update package list and upgrade Docker
sudo apt-get update
sudo apt-get install --only-upgrade docker-ce docker-ce-cli containerd.io
# Verify the upgrade
docker versionOn Linux (CentOS/RHEL/Fedora):
sudo dnf upgrade docker-ce docker-ce-cli containerd.io
# or
sudo yum upgrade docker-ce docker-ce-cli containerd.ioOn macOS/Windows (Docker Desktop):
Update Docker Desktop through the application's update mechanism or download the latest version from https://www.docker.com/products/docker-desktop
For CI/CD pipelines:
Update your Docker client image to match the server:
# GitLab CI example - pin to a compatible version
image: docker:29.0
services:
- docker:29.0-dindIf you cannot update all clients (e.g., third-party tools), configure the Docker daemon to accept older API versions.
Method A: Edit daemon.json
# Create or edit daemon.json
sudo nano /etc/docker/daemon.jsonAdd or merge in this configuration:
{
"min-api-version": "1.24"
}Use the API version your clients require. Common values:
- 1.24 - Supports Docker 1.12+
- 1.40 - Supports Docker 19.03+
- 1.41 - Supports Docker 20.10+
- 1.43 - Supports Docker 24.0+
Restart Docker:
sudo systemctl restart dockerVerify the change:
docker version
# Should show: API version: 1.48 (minimum version 1.24)For Docker Desktop (macOS/Windows):
Go to Settings -> Docker Engine and add "min-api-version": "1.24" to the JSON configuration.
Method B: Systemd environment variable
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/min-api-version.conf << 'EOF'
[Service]
Environment="DOCKER_MIN_API_VERSION=1.24"
EOF
sudo systemctl daemon-reload
sudo systemctl restart dockerForce the Docker client to use a specific API version by setting an environment variable. This is useful for temporary fixes or debugging.
For single commands:
DOCKER_API_VERSION=1.44 docker ps
DOCKER_API_VERSION=1.44 docker-compose upFor your shell session:
export DOCKER_API_VERSION=1.44
docker ps # Now uses API 1.44In CI/CD pipelines (GitLab example):
variables:
DOCKER_API_VERSION: "1.44"
build:
script:
- docker build -t myapp .In docker-compose.yml:
services:
myservice:
environment:
- DOCKER_API_VERSION=1.44Important: This only works if the client supports the specified version. Setting a version higher than your client supports will fail.
If you need immediate compatibility and cannot update clients, you can temporarily downgrade the Docker daemon.
On Ubuntu/Debian:
# List available versions
apt-cache madison docker-ce
# Downgrade to a specific version (e.g., 28.0.4)
sudo apt-get install docker-ce=5:28.0.4-1~ubuntu.22.04~jammy docker-ce-cli=5:28.0.4-1~ubuntu.22.04~jammy
# Hold the version to prevent auto-upgrade
sudo apt-mark hold docker-ce docker-ce-cliOn CentOS/RHEL:
# List available versions
yum list docker-ce --showduplicates
# Downgrade
sudo yum downgrade docker-ce-28.0.4 docker-ce-cli-28.0.4
# Hold the version
sudo yum versionlock docker-ce docker-ce-cliFor Docker-in-Docker in CI/CD:
Pin to a specific version instead of using :latest or :dind:
services:
- docker:28.0.4-dindWarning: Downgrading is a temporary measure. Plan to update your clients to maintain security patches and new features.
Popular container management tools may need updates or configuration changes.
Traefik:
Traefik versions before 3.3.6 / 2.11.18 use API v1.24 by default. Either:
1. Update Traefik to the latest version (recommended)
2. Lower daemon's min-api-version to 1.24
3. Traefik 3.3.6+ supports API version negotiation
# docker-compose.yml for Traefik
services:
traefik:
image: traefik:v3.3.6 # or newerPortainer:
Update to the latest Portainer version:
docker pull portainer/portainer-ce:latest
# Restart your Portainer containerTestcontainers:
Update your Testcontainers dependency to the latest version:
<!-- Maven -->
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>1.21.0</version> <!-- Use latest -->
</dependency>// Gradle
testImplementation 'org.testcontainers:testcontainers:1.21.0'Docker SDK for Python/Go/Node.js:
Update to the latest SDK version that supports API negotiation.
After applying your chosen solution, verify everything works:
# Check versions
docker version
# Test basic operations
docker ps
docker images
docker pull hello-world
docker run --rm hello-world
# Check daemon configuration
docker info | grep -i "api version"For CI/CD pipelines:
Run a test pipeline to ensure all Docker operations work correctly.
For third-party tools:
- Check Traefik logs: docker logs traefik
- Check Portainer can connect to Docker
- Run your Testcontainers test suite
If issues persist:
Check for multiple Docker installations or cached client binaries:
which -a docker
type dockerEnsure you're using the correct Docker binary and that no old versions remain in your PATH.
Advanced notes
### Understanding Docker API Versioning
Docker's API uses semantic versioning independent of Docker Engine versions. Here's the mapping:
| API Version | Docker Engine Version | Notes |
|-------------|----------------------|-------|
| 1.24 | 1.12+ | Long-standing minimum |
| 1.40 | 19.03+ | Added BuildKit support |
| 1.41 | 20.10+ | Added manifest list support |
| 1.43 | 24.0+ | |
| 1.44 | 25.0+ | New minimum in Docker 29.0 |
| 1.48 | 29.0+ | Current as of Docker 29 |
### API Version Negotiation
Modern Docker clients (1.13+) support automatic API version negotiation. When connecting, the client:
1. Queries the server's supported API versions
2. Selects the highest version both support
3. Uses that version for subsequent requests
This negotiation can be disabled by setting DOCKER_API_VERSION explicitly, which is sometimes needed for debugging but generally not recommended.
### Why Docker 29.0 Made This Breaking Change
Docker 29.0 dropped support for API versions below 1.44 because:
1. Maintenance burden: Supporting old API versions requires extensive backward compatibility code
2. Security: Old API versions may have security vulnerabilities
3. Feature parity: New features require minimum API versions
4. Docker 25.0+ EOL: Versions before 25.0 are no longer supported
### Remote Docker Connections
When connecting to a remote Docker daemon over TCP or SSH, version mismatches are common:
# SSH connection to remote Docker
export DOCKER_HOST=ssh://user@remote-host
docker version # May show version mismatchSolutions:
1. Update Docker on the remote host
2. Set DOCKER_API_VERSION to match the remote daemon
3. Configure min-api-version on the remote daemon
### Docker Contexts
If you use Docker contexts to manage multiple Docker endpoints, check each context's compatibility:
# List contexts
docker context ls
# Check version for a specific context
docker --context my-remote-server version### Buildx and API Versions
Docker Buildx has its own version requirements. If builds fail with API version errors:
# Check buildx version
docker buildx version
# Update buildx
docker buildx install### Kubernetes Integration
If using Docker with Kubernetes (e.g., Docker Desktop's Kubernetes), ensure both are updated together to maintain compatibility.
### Monitoring for Version Drift
In production environments, consider monitoring Docker versions across your infrastructure to catch version mismatches early:
# Script to check versions across hosts
for host in host1 host2 host3; do
echo "=== $host ==="
ssh $host "docker version --format '{{.Server.Version}} API:{{.Server.APIVersion}}'"
doneFrequently asked questions
- What does "Error response from daemon: client version X.XX is too old. Minimum su" mean?
- When Docker commands are executed, the Docker client communicates with the Docker daemon through a REST API. Both the client and daemon support specific API versions, and version negotiation occurs automatically to find a compatible version they can both speak. The "client version is too old" error indicates that your Docker client is trying to use an API version that the Docker daemon no longer supports.
- How do I fix "Error response from daemon: client version X.XX is too old. Minimum su"?
- This error occurs when your Docker client uses an older API version than the minimum supported by the Docker daemon. Common after Docker Engine 29.0 upgrade which raised the minimum API to v1.44. Fix by updating the client, lowering daemon's minimum API, or using DOCKER_API_VERSION.
- What causes "Error response from daemon: client version X.XX is too old. Minimum su"?
- Docker Engine upgraded to version 29.0+ which requires API v1.44 minimum (most common) Docker-in-Docker (DIND) image auto-updated to 29.x while client remains on older version Third-party tools using older Docker SDK versions incompatible with new daemon
- Is the "Error response from daemon: client version X.XX is too old. Minimum su" error serious?
- It is a medium-severity error — more of a blocker than a risk. The steps above resolve it.
Official resources & further reading
- 📚Docker Official Documentation
- 📖Docker Engine API - Official Documentation(Official Docs)
- 📖Engine API Version History - Docker Docs(Official Docs)
- 📖Docker Engine 29 Release Notes(Official Docs)
- 📖docker version CLI Reference - Docker Docs(Official Docs)
- 📝
- 💬Sudden Docker error about client API version - Stack Overflow(Stack Overflow)
- 💬
- 🐙
- 🔗
- 🔗