Docker Engine release cadence vs SemVer major version numbers?

Roughly a year ago, Docker Engine (docker-ce) switched it’s scheme for version numbers as stated at Docker Engine 23.0 release notes | Docker Docs

Starting with the 23.0.0 release, Docker Engine moves away from using CalVer versioning, and starts using the SemVer versioning format

In the last year, Docker has moved from Docker Engine v23.x (released February 2023) to v26.x (released early April 2024). By SemVer’s definition, this would imply that Docker has released 3 major versions, all with breaking changes, within the short span of 14 months.

That would be more aggressive than most sites can handle, and doesn’t make sense to me. Upgrading Nginx v1.18 to v2.x or containerd v1.6 to v2.0 would be a major upgrade and require lots of work.

Can anyone help clarify the release policy for Docker Engine?

There may be breaking changes, but they may be in a very niche configuration bit, that 99% of users never use, so it might be irrelevant for them.

Example: Traefik proxy v1 to v2 change was fundamental, current v2 to v3 change seems rather minimal, most configs will just work, except when Docker Swarm provider is used. But it’s still a breaking change, so a major release.

Quote:

  • Advance notice: For retirement of major features or products, we will attempt to notify customers at least 6 months in advance.

4 major versions actually (23, 24, 25, 26)

Although Docker 26.1.1 is the latest Docker version, Docker 25.0.5 was released just 1 day before 26.0. And the last v24 was released on the last day of january, so I think we can still expect bugfixes if needed. More v23 is not likely, since Moby v23.0.10 is the latest Moby version which is the base of Docker CE, but Docker CE 23.0.6 is the latest Docker release.

Thanks for the help.

Regarding “is not likely”, I haven’t been able to find a retirement schedule that mentions that v23 is retired, or when v24/v25 will be retired. Is there such a place? Is GitHub - moby/moby: The Moby Project - a collaborative project for the container ecosystem to assemble container-based systems the most official place for a retirement schedule? The relationship between the release schedules of Moby and Docker Engine/docker-ce is not clear to me.

For sake of discussion, there is also Deprecated Engine Features | Docker Docs which mentions feature deprecations, but that’s different than version deprecation.

The only related page I know about is what I linked. The source code of Docker CE is in the Moby project. As far as I know Moby and Docker CE versions are released together. Since Moby has multiple new versions for v23 and Docker CE doesn’t, it would be really surprising to see a new Docker CE v23 release. Why Docker CE was not released when the source code is in the Moby project, I don’t know. I would like to see a clear release cycle documentation with specific dates, but for now, all we have is the release notes.

If anyone asks me which version they should use since the release of v23, I say install the major version of the latest minus 1 in production until the latest major version gets at least a couple of patches to be more stable, and install the latest version in your local machine where you can easily downgrade if needed so you can prepare yourself to the upgrade in production. v26 is the first major since v23 which got a minor update (v26.1), but it was just yesterday when I think I noticed a bug when I ran a container with Docker v26.1.1 on Ubuntu 24.04 (to test Ubuntu 24.04) and the docker container was deleted, but the lient did not terminate and I had to kill it in a new terminal. It might have been something related to the Ubuntu version. I didn’t have time to reproduce it on other machines, so I still Use v25 in production.

All this is based on my experience, not an official recommendation.

Kubernetes has a version skew policy which defines which version are compatible with eachother in a cluster. Three minor versions are supported at the same time, but there is a public “end of life” date. Hopefully, one dy Docker will have something similar.