But the whole goal of auto-upgrading is to avoid the spread versions
Maybe you wouldn't have so many versions if you slowed down and actually took the time to make sure each version you do eventually release was more stable...?
With a lot of "modern" software, I feel like it's not just "move fast and break things" anymore, it's "keep moving and breaking things". In particular, certain types of software like browsers and OS invoke feelings of dread upon each update: "what did they break/what user hostile crap or other unwanted changes did they try to sneak in this time?"
Docker is, like a lot of other software, "foundational" in that its error-free operation is relied upon by many. How can developers build anything reliable if the foundations are shaky?
Maybe that's partly why retrocomputing is so popular. With something like a C64 you never have to worry about the platform changing, so you can spend all of your energy on solving the problem you had in mind, instead of the ones created by the platform trying to shift under you.