I am reading Docker deep dive since I am interested in this shiny technology.
I can read:
The VM model then carves low-level hardware resources into VMs. Each VM is a software construct containing virtual CPU, virtual RAM, virtual disk etc. As such, every VM needs its own OS to claim, initialize and manage all of those virtual resources. And sadly, every OS comes with its own set of baggage and overheads. For example, every OS consumes a slice of CPU, a slice of RAM, a slice of storage etc. Most need their own licenses as well as people and infrastructure to patch and upgrade them. Each OS also presents a sizable attack surface. We often refer to all of this as the OS tax, or VM tax - every OS you install consumes resources!
The container model has a single kernel running in the host OS. It’s possible to run tens or hundreds of containers on a single host with every container sharing that single OS/kernel. That means a single OS consuming CPU, RAM, and storage. A single OS that needs licensing. A single OS that needs upgrading and patching. And a single OS kernel presenting an attack surface. All in all, a single OS tax bill!
That might not seem a lot in our example of a single server needing to run 4 business applications. But when we’re talking about hundreds or thousands of apps (VM or containers) this can be game changing.
But in a production scenario why should I run for example 5 instances of my application on the same bare metal behind a load balancer to manage scalabilty and performance? Probably I am missing something... Could someone clarify to me the concept please?