Re: Why would anyone want to use any of this?
It might seem like a load of extra nonsense, but when done right, docker and k8s actually contribute greatly to software development.
docker/docker-compose allow you to run development instances in the same environment everywhere, to run on your own laptop/servers all of the stack needed to run/develop your application.
docker registries allow you to reuse images, with very little configuration required.
CI/CD allows you to automate testing and certain quality control measures to ensure quality improvements, automate the production of docker images to use in production, and ensures what gets deployed in production is what was tested
k8s allows you to manage deployment of these services, exposing the various parts of the application to each other.
It makes it much simpler to build things.
wrt to microservices, here's a concrete example. Say you want to add a feature to your web app that generate a PDF from some HTML. That's a pretty common task, and pretty straightforward - there are any number of libraries to do it, you can also just use a web browser. That's just a few weeks/months work for a competent developer. Or you could use a gotenberg docker image. Need more scalability? Update one number in one file and re-run kubectl. Want to know
Need more sophisticated controls than that? Use something managed, like BlueOcean k8s. Don't want to spend money on "stupid cloud" stuff? Run kublr and run on your own metal.