Not like the shipping boxes we see coming into the sea ports around the world.

They are one of today's hottest ways to use cloud-computing. Companies like Google and Twitter are good examples of scale use of this technology. In this short piece we will go over what containers are and where they can be applied.

First, what is a container?

Containers don’t emulate a 1:1 image of a system like a Virtual Machine (VM); instead just the Operating System is virtual. Stemming from Linux roots in the early 2000s, the technology has increased efficacy through introduction through products like Docker and Kubernetes.

The DevOps community knows this better as operating-system-level virtualization; in other words, it is the “light” version or bare minimum of the application framework that is needed to run. Basically, consider them as a very minimal virtual machine (VM) that do not operate on a hypervisor level.

There are a few frameworks usually included in a container:

1) Application

2) Dependences

3) Libraries

4) Binaries

5) Configuration Files

Inside of the container, there is usually one executable (.exe) file or microservice. This allows the app to run in different environments by manipulating the operating system of the actual infrastructure. The really cool part about containers are the size.

These are usually in the range of tens of megabytes (Mbs) not Gigabytes! They only take a few seconds to be created and when/if the load is increasing then new containers can be made and the old seamlessly destroyed.

Virtual Machines Vs. Containers

As touched upon above, many of the characteristics are similar between VMs and Containers, but the use varies greatly depending on the enterprise need.

Virtual Machines:

1) VMs reside on the same server and can run different operating systems. One VM can be running Linux, while the VM a few inches away could be running Windows.

2) VMs are load and storage intensive. They contain complete operating systems and applications. VMs can take up several GB depending on the guest user of the OS.

3) VMs use what is called a hypervisor to share and manage hardware while containers just share the kernel of the OS to access any hardware.

Containers:

1) One of the biggest selling points is that running containers uses far less resources. This frees up the server to allow for other computing tasks. Mbs are cheaper than Gbs!

2) Automation and Quality Engineers love testing and bug tracking on containers. It is much less complicated due to no differences whether on a test server, locally or in production.

3) Container provisioning takes mere seconds and the data can react much faster with large spikes in activity.

4) Less staff, less checks to DigitalOcean; cost effectiveness and development from those using containers has been reported across the board.

But where is the catch?

1) Security developers voice concerns regarding the fact that containers share kernels, which are core components to host operating systems and then they have root access. If there is any vulnerability in the kernel then it can compromise the security of all the other containers. VMs are better in this aspect because only the hypervisor is shared which is less functional and prone to attacks.

2) A business would have to start a new server to be able to run on different OS like Windows or OSX.

For users familiar with C# and Azure; It is worth mentioning that Windows has offered some non-Linux based solutions to containers. Windows Server Containers and Hyper-V are Microsoft are readily accessible.

Clusters on the Horizon

We mentioned Kubernetes before and are admittedly fans of this orchestration platform at Bridge Protocol. Containers that can be clustered allow users to deploy, manage and scale multi-container-based apps without having to worry which server will host a certain container. Microsoft also offers a product here as well called Azure Container Service.

With blockchain on the emerging stage and microservices within these new token ecosystems that handle certain tasks, containers are a really good tool to scale your product/service. Deploying a node can be a lot less cumbersome and easier for the business/user to do with containers. Though VMs are seen as more mature and secure and may be a better option where security outweighs your need for a flexible, lightweight solution.