Issue link: https://insights.oneneck.com/i/1293607
6 Containers For Dummies, HPE and Docker Special Edition These materials are © 2017 John Wiley & Sons, Inc. Any dissemination, distribution, or unauthorized use is strictly prohibited. most servers typically ran at somewhere between 5 percent and 15 percent utilization. But with virtualization, it's possible to get closer to 100 percent, which means that you're using those avail- able resources. In short, you get much higher levels of workload density because you're running many more workloads on far fewer servers. In addition to the resource waste inherent in virtual machines, there are workload portability issues, too. To migrate an applica- tion from one location to another, you have to drag an entire OS along with it. Although virtualization is truly incredible in what it can do for workload density, this waste is significant. For exam- ple, each individual virtual machine requires a separate OS instal- lation. Each OS requires access to RAM, storage, and processing resources. As you scale your environment and deploy more and more virtual machines, you end up dedicating a whole lot of resources to nothing more than operating systems. Moreover, if you peel back the covers of many virtual machines, you'll find that most don't generally use all — or even close to all — of the resources that they're assigned. There's a lot of waste. This same issue, as well as proprietary virtual machine formats, makes it difficult to move workloads between vendors. You can't just drag a vSphere-based virtual machine over to Amazon EC2 or to Hyper-V, for instance. Workload portability beyond the hyper- visor confines is not well supported. There has to be a better way What if you could effectively eliminate this redundancy? With containers, you can, but it doesn't necessarily mean moving away from virtualization. I cover container system architecture later in this book, but for now, I'll focus on what's called the engine — the software that enables containers to work their magic. The container engine is effectively an abstraction layer that enables libraries and application bundles to operate indepen- dently without the need for a complete OS for each bundle. The container engine handles all the hooks to the underlying single- instance OS. Figure 1-2 gives you a look at a container construct.