And if so, why haven't they done so yet ?
Unlike what many people think, containers are not new. They have been around for more than a decade, but they just became popular for a larger part of our ecosystem. Some people think containers will eventually take over.
Imvho, it is all about application workloads. Eight years ago, I wrote about a decade of open source virtualization, and we looked at containers as the solution for running a large number of isolated instances of something on a machine. And by large, we meant hundreds or more instances of Apache, this was one of the example use cases for an ISP that wanted to give a secure but isolated platform to his users. One container per user.
The majority of enterprise use cases, however, were full VMs partly because we were still consolidating existing services to VMs and weren't planning on changing the deployment patterns yet. But mainly because most organizations didn't have the need to run 100 similar or identical instances of an application or a service, they were going from four bare metal servers to 40-something VMs, but they had not yet come to the need to run hundreds of them. The software architecture had just moved from FatClient applications that talked directly to bloated relational databases containing business logic to web-enabled multi-tier applications.
In those days, when you suggested running one Tomcat instance per VM because VMs were cheap, and it would make management easier — (Oh, oops I shut down the wrong Tomcat instance) — people gave you very weird looks.
Software architectures are slowly changing. Today, the new breed of applications is small, single function, dedicated, and it interacts frequently with its peers. Combined, they provide similar functionality as a big fat application 10 years ago, But when you look at the market, that new breed is a minority. So a modern application might consist of 30-50 really small ones, all with different deployment speeds. And unlike 10 years ago, where we needed to fight hard to be able to build dev, acceptance, and production platforms, people now consider that practice normal. So today, we do get environments that quickly go to 100+ instances, but requiring similar CPU power to before, so the use case for containers like we proposed it in the early days is now slowly becoming a more common use case.
So yes, containers might take over... but before that happens, a lot of software architectures will need to change, a lot of elephants will need to be sliced, and that is usually what blocks cloud, container, agile, and devops adoption.