Breaking changes on Docker 29 and how to postpone it

Nov 20, 2025

Recently I got an assignment that needs to use Docker. Usually it can be done with command line, but a lot of time, I use Portainer for the convenience. But today, I wasn't able to access my local Docker environment. It kept saying "the environment named local is unreachable". I discovered that an update to Docker version 29 introduced breaking changes:

The daemon now requires API version 1.44 or later (Docker v25.0+).

A user named JoynalFrametOlimpo at this Github issue showed me a way to downgrade the API version 1.41 by changing /etc/docker/daemon.json

{
    "min-api-version": "1.41",
    [Other settings down here...]
}

Afterwards, it just systemctl restart docker.service and Portainer worked again. Keep in mind that I ran an older version of Portainer, 2.27.9 LTS, because I hate the UI change of the new versions. Also, I don't want to lose the "stacks" I deployed using Portainer.

In the future, I might have to migrate deploying "stacks" to actually using Docker Compose, because everytime I change version on Portainer, I end up always re-deploying these Docker Compose anyway, which is a giant waste of time. Seems like reinventing the wheel to me.