Diving into containers – post #1 of several

In this series of posts I will explore containers and their related technologies.

The problem that containers attempts to solve

  • Allow organizations to respond quickly to new business requirements by speeding application delivery.
  • Helps keep systems and data secure by isolating applications.
  • Lowers development costs by enabling increasing developer agility
  • Reduce maintenance time and cost, since an entire container can be replaced rather than patched and updated.
  • Use existing infrastructure to adopt a new innovative development and hosting discipline.
How do containers achieve these goals?
Containers enable software to run reliably when moved from one computing environment to
another, example:
  • From a developer’s laptop to a test environment, to a QA environment and then into production.
  • From a server in a datacenter to a virtual machine in a private or public cloud.

Containers are easy to deploy and portable across host systems because the complete application environment is included in the container.

What is a container
  • Containers are an application isolation capability on a host operating system.
  • A container consists of an entire runtime environment: an application its dependencies, libraries , binaries, and configuration files, packaged. This bundled application and dependencies abstracts differences in Operating System distributions and infrastructure.
  • All containers on a host must use the same kernel.
Advantages of containers
  • Containers are easy to deploy and portable across host systems because the complete application environment is included in the container.
  • Containers enable server consolidation by running multiple applications on a host, similar to virtualization.
Doesn’t virtualization also enable concurrent applications to run in an isolated environment.
What’s the difference between containers and virtualization? 
  • Virtualization virtualizes CPU, storage and networking to enable a guest operating system to run, and applications run on the guest. Essentially a virtual server.
  • A container host provides a logically isolated runtime environment within the same Operating System of a physical or virtual server.

Containers can run on virtual machines.

Containers compared to Virtual Machines (VM)
Container VM
Shares same kernel Each VM is its own operating system; runs on a hypervisor
Seconds to start Minutes to boot up
Tens of megabytes in size Gigabytes in size
Arguably less secure because root access on a Linux host has access to all containers. Arguably more secure because VMs are isolated.
Available on Linux, Solaris and Windows Operating Systems and  AWS, Azure and Google clouds/ VMware ESXi, KVM, HyperV are hypervisors that run VMs. VMs also run on public clouds: AWS, Azure and Google.


In the next blog post, I will explore containers in Linux and other environments.