Portability is the key for me, because I tend to switch things around a lot. Containers generally isolate the persistent data from the runtime really well.
Docker is not the only, or even the best way IMO to run containers. If I was providing services for customers, I would definetly build most container images daily in some automated way. Well, I do it already for quite a few.
The mess is only a mess if you don’t really understand what you’re doing, same goes for traditional services.
There’s occasionally something buggy, but the last time I ran Windows there were a lot of bugs too. They’re just abstracted away, which Linux DEs don’t do at all.
For me, it’s about choosing the bugs that bug me less. If Windows is working better for you, just run Windows. Internet points are not worth much.