I support the notion of this post. In the last 6 years I’ve mostly been busy removing layers of abstraction in order to uncover the set of tools which is a good balance for me.
In example, replaced clojurescript with Javascript and then eventually Typescript.
Replaced Clojure with Java.
Replaced docker with VMs.
Avoided ansible in favor of simple bash scripts.
Avoid all kinds of firewalls in favor of understanding and using iptables directly.
Etc..
When it makes sense, additional layers of abstraction can always be added on top, if the foundation is solid.
I don't know how others feel, but to me docker is definitely less complex internally than a VM. For one, I'm running a single kernel/set of drivers rather than two.
But operationally yeah I agree, the stricter separation could make it easier to use a VM to get stuff done.
Just to clarify a bit. A VM is already a container.
When you run docker inside a VM it’s another level of abstraction.
Yes, one can run docker containers on bare metal, however the isolation is poor and so is the security guarantees.
In terms of excess abstraction, with VMs or bare metal you just need to learn the essentials that you need to know anyways like for example linux networking and security. With docker there is additionally container networking.
Think about this from the perspective of the post. For us since we do use React CLJS and it’s array of libs did became an excess level of abstraction. A wrapper around the JS engine and JS ecosystem - which didn’t bring enough added value for us to justify its use.
Typescript didn’t attract me at first but eventually it does bring a lot of added value on top of js and it’s 90% JS anyways.
We build hardcore SPAs and the amazing tooling and libs for ts pay off.
You can build infra with cloud-init to achieve something similar. You start with base image (e.g. debian cloud-init image), you craft cloud-init script (like Dockerfile) and you end up with VM disk file which you can run.
It won't be better than docker, for sure, but if you're going to use VMs and stay sane, you'll need to reinvent it.