Evolution Of  Containers

Evolution Of Containers

I have been planning to write this down, since I first met docker back in 2015. One of my friends introduced me to it and I immediately loved it.

What is a container?

According to Docker,inc : “Container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another.”

It is a kind of Virtual Machine without the OS part.

 Conventionally, if we want to virtualize an application. We install a hypervisor and then install an OS over it. After this, we run the application over the OS. Here the Application have to interact with the base OS kernel and this kernel talks with the hypervisor kernel. Apparently, we have two kernels doing the base operating system functionality like handling IO. Containers remove this over-head by eliminating the need for two kernels. With containers, we just need a base OS kernel and container libraries.

 For instance, suppose we want two applications Apache and Mysql to be running on a isolated environment. With hypervisor model, We install a hypervisor on the physical machine. Create two virtual machine. Install a guest OS on both the guest machines. Then Install Apache on one VM and Mysql on the other (Tedious task, isn’t it).

 With the containerization, You install an OS. Configure container on it. Then you create a small container for Apache and Mysql. Note these containers will contain only the application code and some libraries (dependencies) to interact with the OS, not the entire OS.

History

The concept of containerization is around since 1979. Linux admin's favourite chroot is one of the first system calls that materialized this concept (in unix). This was followed by FreeBSD Jails and Solaris zone (Back-bone of Oracle ZFS).

 It was after 2005, the containers began getting a well-defined structure pioneered by Open VZ and Google’s own Process container (They used cgroups which is one of the building blocks for the famous docker). Cgroups were eventually merged with the Linux Kernel.

In 2008, LXC was created. LXC (LinuX Containers) was the first, most complete implementation of Linux container manager.

It was in 2013, containers exploded in popularity with advent of Docker. Docker separated itself from the pack by offering an entire ecosystem for container management.

The Docker Explosion

Docker achieved popularity because it provided entire solution for container management. Along with basic container functionality, Docker standardized its images, provided registry services and had a huge community support.

Entry of Captain Kube

Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. Note that Kubernetes is not a Container by itself but an orchestration for Container.

There is a common myth that Kubernetes is an entire alternative for Docker and it is killing docker. This is not true.

Kubernetes does to Docker what Virt-manager does to KVM or vCenter does to ESXi. It eases the user tasks on docker while providing advanced features like high-availability, clustering, load balancing etc.

Docker had its native "swarm" to perform the orchestration. However Kubernetes with its track record of managing Linux Containers for 15 years for its creator Google outsmarted Swarm. Its popularity was so huge that Docker announced support for Kubernetes in DockerCon Europe.

The Future

At present, most of the virtualized work-load is still run on conventional hypervisor model. KVM, VMware, Hyper-v and Xen being the main players. Container system in Production is quite negligible. Main challenge containers face is the inertia of the user community to adopt the same.

With more and more innovations in this area. We will slowly transfer the production work-load to container system. With the likes of Kubernetes, Docker and rkt (a security centric container engine), the path of the virtualized environment is clear.












To view or add a comment, sign in

More articles by Askar Ismail

  • The Buffer/Cache Phobia

    As a Linux Support Engineer, I often get a question from People: "Why Linux is using up my Ram as Buffer/Cache?". This…

    7 Comments
  • Threats of the Virtual World

    The world has now evolved into a virtual one. Internet has brought drastic changes in our life over the past few…

Others also viewed

Explore content categories