An Introduction to Containers

What is a Container?

A Container is a set of processes (applications and their dependencies) that can be isolated from the rest of the machine. While a Virtual Machine Hypervisor abstracts the entire device (hardware-level), Containers abstract only the Operating System (OS-level).

Within an Operating System many Containers can exist, and they are isolated from each other. Within a Container, applications are packaged along with their dependencies. So within the same OS, for example, one Container can have a certain version of PHP while another has a different version.

When compared to VMs, Containers occupy less space/resources. They can be built once and can run on different platforms like network device, server, virtual server, or public cloud. Hence, vendors claim, it is faster to develop and release applications as Containers, than VMs.

Containers work in homogeneous environments (same OS) while VMs work in heterogeneous environments (multiple OS). Today, Containers mostly refer to Linux Containers; but the concept of Containers exist in FreeBSD, Solaris, etc.

Basic Difference Between Containers & Virtual Machines:

Important Points to note about Containers: 

  1. Containers are smaller and more flexible than Virtual Machines (VMs) as they don’t need a Hypervisor and a Guest OS. That makes them portable and it is easier to move them between private and public clouds, for example.
  2. When compared to a Virtual Machines, Containers enable a system to run more applications (2x – 3x, as claimed by some Container vendors) for the same hardware configuration.
  3. Applications run in its own Container and contain all its dependencies, etc. within it. Hence they are portable.
  4. It is easier for developers to make portable and container-ready applications.
  5. Since the same Container can be used on multiple platforms, time taken for creating/testing (on each) is reduced.
  6. Container portability across different Linux OSes is possible.
  7. Containers can run inside Virtual Machines.
  8. Containers boot up quickly as they have smaller payload. The spin up time of a VM is higher than a Container.
  9. VMs have Hypervisors and Guest OS to manage, update, and secure; Containers don’t have this additional burden.
  10. Each OS process requires its own VM/Container. Hence, for applications involving Microservices architectures and other web-scale applications that services hundreds/thousands of processes, Containers are faster.
  11. It’s easier to detect Container activity, and hence it is possible to retire unused Containers quickly – freeing up resources.
  12. Containers can communicate with each other through technologies like Virtual Switching, etc.
  13. Containers result in faster development/delivery of applications.
  14. With Containers, it is easier/faster to scale up or down.

Interesting Container Projects to explore: Linux Containers, Docker, CoreOS Rocket.

excITingIP.com

You could stay up to date on Computer Networking/IT Technologies by subscribing to this blog with your email address in the sidebar box that says, ‘Get email updates when new articles are published’.