Startups … It’s Time to Embrace Docker!

By Flux7 Labs

August 26, 2014

The buzz about Docker has risen to a roar during the past year. Irrespective of the size of the organization, it has attracted a lot of interest.

Not convinced? Docker 1.0 is now used in production by three large financial organizations, including one that treats security as its highest priority. The welcome mat for Docker has not been restricted to just the open source community. It has pretty much impressed every rung of the organizational hierarchy.

Your local dev environment and production environment aren’t similar. This leads to bugs during production.

Resource provisioning takes ages.

Your bills are through the roof as you deploy new servers now and then based on increasing needs.

So, what is Docker and where can it help you?

In simple terms, Docker:

Makes Linux OS isolation tools easier to use.

Looks like a virtual machine.

Supports application development at a whole new level.

The Holy Grail of virtualization is the use of abstraction layers. By adding an abstraction layer, this allows for the needed communication while isolating sources of contention. This is depicted in the image below.

The idea is to:

Allow communication

Prevent conflict over resources

Create an abstraction layer continuum

However, to achieve this, there are a lot of costs and needed resources, including overhead, increased latency and time. This is when you reach out to Docker for a solution.

Docker provides isolation features and enacts a VM-like environment. Docker containers can be up and running in less than 50ms. They can be stopped in about the same time. This is opposed to virtual machines which require 35 to 40 seconds to start, and roughly 5 to 10 seconds to stop.

Now, let’s discuss specific use cases and what to expect from Docker in each case. Here they are:

1. Configuration Management: The primary concern is to create a configuration in a canonical environment and emulate it. While this can be done using virtual machines, Docker stands out by providing the following features:

Consistent Environment

Developer Niceties

Eliminates Memory Overhead

Minimizes Performance Overhead

2. Multiple Instances Per Box: The idea is to use multiple instances in a single box. When is this applicable? Consider a scenario wherein your application needs to be scaled to support multi-tenancy. Docker is your go-to solution because of the following reasons:

Process and Filesystem Isolation

Port Forwarding

Absence of Idle Memory and CPU Overhead

3. Resource Provisioning: The concern here is to allocate Docker containers as a replacement to VMs. Docker takes the upper hand with its easy-to-use features, including:

Sharing of Resources

Quick Start and Stop Times

Effective Management of Multiple Images

So, is Docker the right fit for you?

Given that these interesting features from Docker greatly benefit developer workflows to improve testing in the local dev environment, reduce the time needed to maintain the environment, and ease tasks, such as re-creating and sharing that environment, it seems wise to embrace Docker. And enjoy its features.