I think that people take a while to grasp the implications of any technology shift. Fred P Brooks "There ain't no silver bullet" still holds true.
When VMs came along we thought of them as simply 25% less powerful versions of the equivalent spec physical machine. It took a while to grasp that we could script them, parameterise the script, refine and improve the script, add software + software config to the script. All of a sudden dev, test, prod etc could be guaranteed to be identical. We could spin up experimental and training environments for a short period of time. We could rehearse service pack, hot fixes on exactly the same kit as production. Then we worked out we didn't need to do that! We could build a machine at the latest patch level, install our software and run automated tests.
Hypervisors improved, tooling and scripting improved. A lot of our concerns were addressed, much of those were addressed by our own education.
Containers are gripping people's imagination now. Why have an entire VM when you only want to run a few simple functions?
But containers are not tomorrow's technology. Start reading about unikernels. A unikernel contains only the bits your app needs and that includes only the bit of the OS you app needs. We're back to apps measured in Kb! These things spin up and shut down so fast that they don't exist long enough to hack even if they contained something to hack and for most apps they won't!