Fixing Watchtower: Solving the "Client Version 1.25 is Too Old" Docker Error
If you use Watchtower to keep your Docker containers updated automatically, you might have recently noticed that it has silently stopped working. If you check your logs, you’re likely seeing an error about the client version being "too old."
If you use Watchtower to keep your Docker containers updated automatically, you might have recently noticed that it has silently stopped working. If you check your logs, you’re likely seeing an error about the client version being "too old."
I ran into this issue after a recent Docker update to version 29, and here is how I fixed it by migrating from the abandoned containerrr/watchtower image to the actively maintained nickfedor/watchtower.
The Symptom: Watchtower Stops Updating
After updating my Docker hosts to Docker Engine v29, Watchtower completely failed to start. It wasn't updating my containers, and it wasn't updating itself.
Running docker logs --follow [watchtower_container_name] revealed the following fatal error:
time="2025-12-01T10:00:00Z" level=fatal msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version."The Cause: An Abandoned Project
The root cause is simple but unfortunate: the official containerrr/watchtower repository has not been updated in over two years.
Docker recently deprecated older API versions to improve security and performance. The original Watchtower image was built using an older Docker client library (v1.25) that is no longer supported by modern Docker engines as of Docker v29 (which now require v1.44+).
Because the project is unmaintained, there is no official patch coming to fix this compatibility issue.
The Solution: Migrating to nickfedor/watchtower
Fortunately, Nick Fedor has forked the project and is actively maintaining it. His fork updates the internal dependencies to work with modern Docker APIs while keeping the exact same functionality and configuration options as the original.
Details: nickfedor/watchtower
Here is how you can migrate in less than a minute.
Method 1: Docker Compose (Recommended)
If you are using docker-compose.yml, you only need to change the image line.
Old Configuration (Broken):
services:
watchtower:
image: containerrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
New Configuration (Working):
services:
watchtower:
image: nickfedor/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
After updating the file, pull the new image and recreate the container:
docker-compose pull
docker-compose up -dMethod 2: Docker Run Command
If you run Watchtower via the CLI, simply swap the image name in your run command:
# Stop and remove the old container
docker stop watchtower
docker rm watchtower
# Run the new maintained fork
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
nickfedor/watchtower
Verification
Once the new container is running, check the logs to ensure it is communicating with the Docker socket correctly:
docker logs --follow watchtower
You should see the familiar startup message, but this time without the fatal API error:
time="2025-12-03T21:00:00Z" level=info msg="Watchtower 1.7.1"
time="2025-12-03T21:00:00Z" level=info msg="Using no notifications"
time="2025-12-03T21:00:00Z" level=info msg="Checking all containers (except explicitly disabled) every 24 hours"Bonus: Watchtower Config
It would not surprise me if many people out there got started with watchtower by simply running the container with no environment variables. While this may work fine for many, there are likely some out there who would rather have more control over how Watchtower functions. Here are some environment variables that you may wish to look at for your Watchtower deployment:
TZ Set watchtower's timezone for logging and execution
WATCHTOWER_SCHEDULE Use a cron string to control when Watchtower checks for container updates.
WATCHTOWER_NO_RESTART This may be critical for some depending on your requirements. Pull the new image but do not restart the container.
WATCHTOWER_CLEANUP Cleans up old images after an update.
There are command line equivalents for most environment variables for those who prefer the docker command over compose.
As best I can tell most, if not all, of the environment variables from containerrr/watchtower have been brought over to Nick's fork. Check the website link above for more details on other enironment variables.
Conclusion
It is always a risk relying on Docker images that haven't seen a commit in years. While containerrr/watchtower served us well for a long time, it's time to move on. The nickfedor fork is a drop-in replacement that requires no config changes and gets your automated updates running again instantly.
Have you run into this issue? Did you find another watchtower image out there that you prefer? Need help with watchtower? Leave a comment below!