Docker API error

I'm getting the following error:

com.github.dockerjava.api.exception.DockerException: Status 400: client version 1.24 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version

after upgrading Docker and Docker Compose plugin.
Docker was updated on the regular basis, but Docker Compose plugin was not.
With the most recent Docker update, Docker Compose became incompatible, so I updated it too.

PhpStorm used to have this setting in the past:
Settings → Build, Execution, Deployment → Docker → Tools → Docker Compose Executable.
2025.2.4 doesn't have it.

I tried several things including clearing all caches, reinstalling, but to no avail.

Outside of the IDE Docker works as expected, inside I'm getting this error whenever I touch anything related to Docker.

Notes:
Downloading Docker from 29.0.0 to v28.5.2 fixes the issue (no error).
OS: Ubuntu.

23
21 comments

I’m having the same issue. 
OS: Pop-OS
 

0

Same issue updated docker 29.0.0 and the connection doesnt work anymore in the editor

2

Same here, just started today

0

Same issue with IntelliJ IDEA on Ubuntu 24.04.3 LTS

docker info
Client: Docker Engine - Community
Version:    29.0.0
Context:    default
Debug Mode: false
Plugins:
 buildx: Docker Buildx (Docker Inc.)
   Version:  v0.29.1
   Path:     /usr/libexec/docker/cli-plugins/docker-buildx
 compose: Docker Compose (Docker Inc.)
   Version:  v2.40.3
   Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
…
Server Version: 29.0.0
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Using metacopy: false
 Native Overlay Diff: true
 userxattr: false
Logging Driver: json-file
Cgroup Driver: systemd
Cgroup Version: 2
Plugins:
 Volume: local
 Network: bridge host ipvlan macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
CDI spec directories:
 /etc/cdi
 /var/run/cdi
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: fcd43222d6b07379a4be9786bda52438f0dd16a1
runc version: v1.3.3-0-gd842d771
init version: de40ad0
Security Options:
 apparmor
 seccomp
  Profile: builtin
 cgroupns
Kernel Version: 6.14.0-35-generic
Operating System: Ubuntu 24.04.3 LTS
OSType: linux
Architecture: x86_64
…

ID: 970a2500-e7c2-41fb-8ea1-692b93482ccc
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
 ::1/128
 127.0.0.0/8
Live Restore Enabled: false
Firewall Backend: iptables
1

same here with pycharm 2025.2.4

0

Having the same issue with PhpStorm 2025.2.4 currently. i also had to revert to the previous version of of docker

$ docker --version
$ apt list -a docker-ce // the get previous version
$ sudo apt remove docker-ce docker-ce-cli containerd.io
$ sudo apt install docker-ce=5:28.5.2-1~ubuntu.22.04~jammy docker-ce-cli=5:28.5.2-1~ubuntu.22.04~jammy containerd.io
3

Same here with intellij in the last version 

0

Same here with all the latest updates:

CLion 2025.2.4
Docker plugin: 252.27397.129
OS: Ubuntu

System docker engine versions:

Version:           29.0.0 
API version:       1.52
 

Update: downgrading required docker API within the service itself solved for now the problem:

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/min-api-version.conf

Paste:

[Service]
Environment="DOCKER_MIN_API_VERSION=1.24"

sudo systemctl daemon-reload
sudo systemctl restart docker

6

I have the same error too. It seems there was a broken update from docker.

I was using TestContainers in Java, and getting

UnixSocketClientProviderStrategy: failed with exception BadRequestException (Status 400: {"message":"client version 1.32 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"}

This is how I fixed it on my Ubuntu system

apt list -a docker-ce | head # To find the version to downgrade to
sudo apt remove docker-ce docker-ce-cli containerd.io
sudo apt install -y \
    docker-ce=5:28.5.2-1~ubuntu.22.04~jammy \
    docker-ce-cli=5:28.5.2-1~ubuntu.22.04~jammy \
    containerd.io
sudo systemctl restart docker
docker version # To check we are now on the correct Docker version

 

1

Docker listed it in their Release notes for version 29. “The daemon now requires API version v1.44 or later ”

https://docs.docker.com/engine/release-notes/29/#breaking-changes

3

Same here. Ubuntu 24.04.

My fix fo revert docker to version 28 is:

sudo apt remove docker-ce docker-ce-cli containerd.io #remove docker
sudo apt install -y \
    docker-ce=5:28.5.2-1~ubuntu.24.04~noble \
    docker-ce-cli=5:28.5.2-1~ubuntu.24.04~noble \
    containerd.io # install old version
sudo systemctl restart docker # restart services
docker version # To check we are now on the correct Docker version
0

Hello,

Thank you for reporting! Please follow IJPL-217878 "Status 400: client version 1.24 is too old" after updating Docker Engine to v29.

0

FWIW, after downgrading, and in order to prevent the package to re-install upon next upgrade, useful to put the packages on hold:

sudo apt-mark hold docker-ce
sudo apt-mark hold docker-ce-cli

the packages will still be listed when running checking for udates
but will no longer be installed

to list the hold packages:

sudo apt-mark showhold

and to unhold them when the issue will be fixed:

sudo apt-mark unhold docker-ce
sudo apt-mark unhold docker-ce-cli

 

sidenote…
Markdown support here would be nice

 

0

Hello guys, had the same issue! 
I resolved without do downgrade the of docker.

Add file in /etc/docker/daemon.json

{
 "min-api-version": "1.32"
}

Now go sudo systemctl restart docker

1

Execute this script to fix this:

#!/bin/bash

# Script para fazer downgrade do Docker Engine
# Uso: sudo ./docker-downgrade.sh [versão]
# Exemplo: sudo ./docker-downgrade.sh 5:27.5.1-1~ubuntu.22.04~jammy

set -e  # Parar em caso de erro

# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Versão padrão (você pode mudar aqui ou passar como argumento)
DEFAULT_VERSION="5:27.5.1-1~ubuntu.22.04~jammy"
VERSION="${1:-$DEFAULT_VERSION}"

echo -e "${YELLOW}=== Docker Engine Downgrade Script ===${NC}"
echo -e "Versão alvo: ${GREEN}$VERSION${NC}"
echo ""

# Verificar se está rodando como root
if [ "$EUID" -ne 0 ]; then
    echo -e "${RED}ERRO: Este script precisa ser executado como root (use sudo)${NC}"
    exit 1
fi

# Mostrar versão atual
echo -e "${YELLOW}=== Versão atual do Docker ===${NC}"
docker version 2>/dev/null || echo "Docker não está rodando ou não está instalado"
echo ""

# Confirmar com o usuário
echo -e "${YELLOW}=== AVISO ===${NC}"
echo "Este script irá:"
echo "  1. Fazer backup da configuração atual"
echo "  2. Parar o Docker"
echo "  3. Remover a versão atual"
echo "  4. Instalar a versão $VERSION"
echo "  5. Bloquear atualizações automáticas"
echo ""
read -p "Deseja continuar? (s/N) " -n 1 -r
echo ""
if [[ ! $REPLY =~ ^[Ss]$ ]]; then
    echo -e "${RED}Operação cancelada pelo usuário${NC}"
    exit 1
fi

# Verificar se há containers rodando
echo -e "${YELLOW}=== Verificando containers em execução ===${NC}"
RUNNING_CONTAINERS=$(docker ps -q 2>/dev/null | wc -l)
if [ "$RUNNING_CONTAINERS" -gt 0 ]; then
    echo -e "${YELLOW}AVISO: Há $RUNNING_CONTAINERS container(s) em execução${NC}"
    docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
    echo ""
    read -p "Deseja parar os containers antes de continuar? (s/N) " -n 1 -r
    echo ""
    if [[ $REPLY =~ ^[Ss]$ ]]; then
        echo "Parando containers..."
        docker compose down 2>/dev/null || docker stop $(docker ps -q) 2>/dev/null || true
    fi
fi
echo ""

# Backup da configuração
echo -e "${YELLOW}=== Fazendo backup da configuração atual ===${NC}"
BACKUP_DIR="/etc/docker.backup.$(date +%Y%m%d_%H%M%S)"
if [ -d "/etc/docker" ]; then
    cp -r /etc/docker "$BACKUP_DIR"
    echo -e "${GREEN}✓ Backup criado em: $BACKUP_DIR${NC}"
else
    echo -e "${YELLOW}⚠ Diretório /etc/docker não existe, pulando backup${NC}"
fi
echo ""

# Parar o Docker
echo -e "${YELLOW}=== Parando Docker ===${NC}"
systemctl stop docker.socket 2>/dev/null || true
systemctl stop docker 2>/dev/null || true
echo -e "${GREEN}✓ Docker parado${NC}"
echo ""

# Remover versão atual
echo -e "${YELLOW}=== Removendo versão atual ===${NC}"
apt-mark unhold docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 2>/dev/null || true
apt-get remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 2>/dev/null || true
echo -e "${GREEN}✓ Versão atual removida${NC}"
echo ""

# Verificar se a versão existe no repositório
echo -e "${YELLOW}=== Verificando disponibilidade da versão ===${NC}"
if ! apt-cache madison docker-ce | grep -q "$VERSION"; then
    echo -e "${RED}ERRO: Versão $VERSION não encontrada no repositório${NC}"
    echo ""
    echo "Versões disponíveis:"
    apt-cache madison docker-ce | head -10
    exit 1
fi
echo -e "${GREEN}✓ Versão encontrada no repositório${NC}"
echo ""

# Instalar versão específica
echo -e "${YELLOW}=== Instalando versão $VERSION ===${NC}"
apt-get update -qq
apt-get install -y \
  docker-ce=$VERSION \
  docker-ce-cli=$VERSION \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin

echo -e "${GREEN}✓ Nova versão instalada${NC}"
echo ""

# Bloquear atualizações automáticas
echo -e "${YELLOW}=== Bloqueando atualizações automáticas ===${NC}"
apt-mark hold docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
echo -e "${GREEN}✓ Pacotes bloqueados para atualização${NC}"
echo ""

# Iniciar Docker
echo -e "${YELLOW}=== Iniciando Docker ===${NC}"
systemctl start docker
systemctl enable docker
echo -e "${GREEN}✓ Docker iniciado${NC}"
echo ""

# Aguardar Docker inicializar
echo "Aguardando Docker inicializar..."
sleep 3

# Verificar instalação
echo -e "${YELLOW}=== Verificando instalação ===${NC}"
if docker version &>/dev/null; then
    echo -e "${GREEN}✓ Docker está funcionando corretamente${NC}"
    echo ""
    docker version
else
    echo -e "${RED}✗ ERRO: Docker não está funcionando corretamente${NC}"
    echo "Verifique os logs com: sudo journalctl -u docker -n 50"
    exit 1
fi

echo ""
echo -e "${GREEN}=== Downgrade concluído com sucesso! ===${NC}"
echo ""
echo "Próximos passos:"
echo "  1. Se você parou os containers, inicie-os novamente com: docker compose up -d"
echo "  2. Para desbloquear atualizações futuras: sudo apt-mark unhold docker-ce docker-ce-cli"
echo "  3. Backup da configuração anterior em: $BACKUP_DIR"
echo ""
0

Jardel Marden your sulution didnt work for me, you did exactly this?

0

I could solve this issue with this on my fresh Linux installation (Kubuntu 24):
- update/create /etc/docker/daemon.json file
- add/edit to have this into this file:  "min-api-version": "1.24"
 

6

The same fix with "min-api-version" is working for Docker Desktop for Mac. Go to Setting… → Docker Engine and just add "min-api-version": "1.24".

6

Please sign in to leave a comment.