A Look at Containers and Virtual Machines and Their Tradeoffs

What are Containers?

What are Containers?

Containers are standardized units of software that contain all the code and dependencies, including binaries, libraries, and configuration files, needed for an app to run. Containerized software can run reliably from one computing environment to another.

Virtual Machines vs. Containers

Both virtual machines (VM) and containers use virtualisation to create isolated environments for running applications. The key difference lies in the granularity of virtualisation they provide—VMs virtualise at the operating system (OS)/machine level while containers virtualise at the software level.

Let’s take a closer look at the differences between these two virtualisation technologies.

Virtual Machines

A VM virtualises the entire machine and OS so that it can be hosted on a different machine. To share the resources of the host machine, you’ll need a hypervisor to virtualise the server. Multiple VMs may run on a single hypervisor interfacing with a host machine. VMs can save you money by allowing you to partition a single physical server into multiple machines that can run apps with different dependencies and operating requirements. 

While you might save money by not having to purchase new servers, VMs do require a lot of system resources from the host machine. When you have to simulate an entire OS and underlying machine to run a single app through a hypervisor, it becomes clear that further granularity could give you even greater cost savings.

Test Drive FlashBlade

Experience a self-service instance of Pure1® to manage Pure FlashBlade™, the industry's most advanced solution delivering native scale-out file and object storage.

Containers

Imagine the convenience of running an app in a virtual environment without the hefty resource requirements of a hypervisor. That’s basically what a container allows you to do by encapsulating software into virtual self-contained units. 

In a container, you no longer need to virtualise an entire operating system and server with a hypervisor. Instead, you only virtualise the software and hardware dependencies needed for a particular app to run while using the OS kernel of the host machine. Containers allow you to create multiple workloads on a single OS instance. As a result,  containers are orders of magnitude less taxing on your physical servers than VMs.

Tradeoffs Between Containers and Virtual Machines

While containers are more agile than VMs, their dependency on the host machine’s OS kernel limits the use of apps with dependencies on other OS environments. VMs are also more isolated and secure in that they are truly independent of the host machine. 

You should use containers when:

  • Maximising the number of apps running on a single OS kernel
  • Deploying multiple instances of a single app
  • Prioritizing compute and storage resources

You should use VMs when:

  • Running multiple apps with different OS dependencies on a single server 
  • Running an app that needs all the resources and functionalities of an OS
  • Prioritizing isolation and security

The Benefits of Container Orchestration with Pure Service Orchestrator

While containers abstract away the details of underlying hardware from a software development perspective, inefficiencies in legacy IT infrastructure can still bog down overall performance.

Pure Service Orchestrator™ is a container orchestration tool that effortlessly delivers persistent storage resources to containerized applications. It integrates seamlessly with Kubernetes and other container orchestration tools to provide:

  • Automated storage delivery on demand
  • Policy-based provisioning
  • Elastic scaling across all your arrays including hybrid cloud
  • Intelligent container deployment across file and block arrays
  • Enterprise-grade resiliency with automated failover and self-healing data access integrity

Pure Service Orchestrator combines elastic scaling, smart provisioning, and transparent recovery to deliver containers as-a-service.

800-379-7873 +44 20 3870 2633 +43 720882474 +32 (0) 7 84 80 560 +33 9 75 18 86 78 +49 89 12089 253 +353 1 485 4307 +39 02 9475 9422 +31 (0) 20 201 49 65 +46-101 38 93 22 +45 2856 6610 +47 2195 4481 +351 210 006 108 +966112118066 +27 87551 7857 +34 51 889 8963 +41 31 52 80 624 +90 850 390 21 64 +971 4 5513176 +7 916 716 7308 +65 3158 0960 +603 2298 7123 +66 (0) 2624 0641 +84 43267 3630 +62 21235 84628 +852 3750 7835 +82 2 6001-3330 +886 2 8729 2111 +61 1800 983 289 +64 21 536 736 +55 11 2655-7370 +52 55 9171-1375 +56 2 2368-4581 +57 1 383-2387