One of the most popular topics these days concerns containers, and what their role is. Containers have become increasingly important recently, mainly thanks to Docker. Various major providers such as IBM, VMware and Amazon Web Services have all embraced containers with open arms. As a result, this discussion has become a very popular topic and people are asking whether containers will be taking over and replace virtual machines.

What Are Containers?

Containers essentially aren’t new, as they became popular a few years ago when Docker unveiled a new way to manage applications simply by isolating specific codes. This refers to a piece of lightweight software that has everything required to successfully run an application. Multiple containers can run on the same operating system and share resources.

Containers are a hot topic these days, as the world’s top IT companies are using them. They promise a streamlined method of implementing infrastructure requirements, and they also offer a great alternative to virtual machines. In short, if anything goes wrong in the container, it only affects that single container, and not the whole server.

What Are Virtual Machines?

A virtual machine refers to an operating system that fulfills various functions on software instead of hardware. A hypervisor can abstract applications from the specific computer, which allocates resources such as network bandwidth and memory space, to multiple virtual machines. With this technology, service providers can increase network functions running on expensive nodes automatically. Hypervisors work to separate an operating system and applications from the physical hardware. They allow the host machine to operate various virtual machines as guests and thereby maximize the use of resources such as network bandwidth and memory.

Hypervisors metaphorically died when Intel launched their Intel-VTx chip. Before this, Xen and VMware had two different ways in approaching hypervisor capabilities, namely paravirtualization and binary translation. Arguments were held about which was best and faster than the other, but as soon as Intel VTx came along, it was the winner and both Xen and VMware started using this chip.

As we move towards cloud applications there is a need to standardize underlying operating systems as you can’t get the same efficiency when you run 10 different operating systems. Whether you are moving towards PaaS or containers, either way, you are slowly moving away from heterogeneity.

In general, containers are much more effective than virtual machines, simply because of the way in which they allocate resources. Containers run in an isolated environment and they have all the necessary resources to run an application. The remaining resources that are not used, can be utilized to run other applications, and as a result, containers can run two or three times as many applications as an individual server. Apart from increasing the efficiency of a system, this technology also allows us to save money by not having to invest in more servers in order to handle multiple processes.

Another reason why containers are seen as supporting virtual machines, is the fact that they can handle a quicker boot up process. With a typical virtual machine taking up to around a minute to boot, a container can do this in a micro second.

PaaS tools such as Cloud Foundry, and systems such as Mesos and Kubernetes are already designed to scale your workload drastically as they detect performance failures and take various proactive steps to deal with them.

Containers have a minimalist structure and that is a key differentiator. Unlike virtual machines, they don’t need a full operating system installed in the container, and don’t need a copy of the hardware. They operate with the minimum amount of resources and they are designed to perform the task they were designed for. A container’s ephemeral nature is another distinguishing characteristic. Containers can be installed and removed without any major disruption to the system. If an experiment should fail, the newer version can be rolled back and replaced. This is a new way of managing a data center and it’s key to the overwhelming interest that technology companies have expressed in Docker and its associated technologies recently.

Virtual Machines Are Still Useful

Even though containers have many advantages to offer over virtual machines, they are not without fault. One of the biggest issues that comes with containers is its security. Because of the fact that containers use the same operating system, a security breach can occur much easier. A security breach can allow access to the entire system, in comparison to virtual machines. Also, since many container applications are available online, it opens up the window for additional security threats. If the software is infected with malware, which has the ability to spread to the entire operating system.

Since containers have their advantages and disadvantages, it’s safe to say that virtual machines are not going anywhere – yet. They will likely not replace virtual machines completely, as these technologies complement each other rather than replacing each other. Hybrid systems are currently being develop to utilize the best advantages of both.