You are on page 1of 4

Docker Usecases

Nitin AGARWAL Follow


Jan 5, 2017 · 4 min read

Image Source and Credits: http://blog. ux7.com/blogs/docker/8-ways-to-use-docker-in-the-real-world

Docker provides lightweight virtualization with almost zero overhead. Primarily, you can
benefit from an extra layer of abstraction offered by Docker without having to worry
about the overhead. Many containers can be run on a single machine than with
virtualization alone. Containers can be started and stopped within milliseconds.

In summary, Docker’s functionality falls into several categories:

Portable deployment of applications

Support for automatic building of docker images

Built-in version tracking

Registry for sharing images

A growing tools ecosystem from the docker API


Consistency among different environments

Efficient utilisation of resources

The feature that really sets Docker apart, is the layered file system and the ability to
apply version control to entire containers. The benefits of being able to track, revert and
view changes is a highly desirable and widely-used feature in software development.
Docker extends that same idea to a higher construct; the entire application, with all its
dependencies in a single environment.

Here are just some of the use cases that provide a consistent environment at low
overhead with the enabling technology of Docker.

Simplifying Configuration
Docker provides the ability to run any platform with its own config on top of any
infrastructure without the overhead of a virtual machine. Docker lets you put the
configuration files into code as well as pass via env variables for different environments
and deploy it. Hence, the same docker image can be used in different environments. This
decouples infrastructure requirements from the application environment.

Code Pipeline Management


The simplification of configuration makes a large impact in managing the code pipeline.
As the code travels from the developer’s machine to production, there are many different
environments it has to go through to get there. Each of these may have minor differences
along the way.

Docker provides a consistent environment for the application from dev through
production, easing the code development and deployment pipeline. The immutable
nature of Docker images, and the ease with which they can be spun up, help you achieve
zero change in application runtime environments across dev through production.

Developer Productivity
In development environment, basically we need to achieve two major goals. One, we
want the development environment to be as close as possible to production and
secondly, we want the development environment to be as fast as possible for interactive
use.

To achieve the first goal, we need to have every service running on its own VM to reflect
how the production application runs. Docker’s low overhead easily allows a few dozen
services to run inside different containers on the development environment which
usually has a low memory capacity.

To achieve the second goal, we make use of docker’s shared volumes to make the
application code available to the container from the host OS. This way, the developer
can edit the source code from his platform & editor of choice and is able to see the
changes right away as the applications run using the same source code with the running
environment set inside Docker container.

App Isolation
There are cases where you need to have isolation among applications are server
consolidation for decreasing cost or a plan to separate a monolithic application into
decoupled pieces. For example, you might need to run two REST API servers, both of
which require apache. But, each of them uses a slightly different version of apache and
other such dependencies. Running these API servers under different containers provides
an easy way out through what we call the “dependency hell”.

Server Consolidation
The application isolation abilities of Docker allows consolidating multiple servers to save
on cost without the memory footprint of multiple OSes and the ability to share unused
memory across the instances. Docker provides far denser server consolidation as
compared to VMs.

Debugging Capabilities
Docker provides many tools that are not necessarily specific to containers, but, they work
well with the concept of containers, such as the ability to checkpoint containers and
container versions, as well as to diff two containers which is immensely useful in fixing
an application.

Multi-tenancy
Another use case of Docker is its use in multi-tenant applications, thereby avoiding major
application rewrites. For example is to develop quick and easy multi-tenancy for an IoT
application. Code bases for such multi-tenant applications are far more complicated,
rigid and difficult to handle. Rearchitecting an application is not only time consuming,
but also costs a lot of money.

Using Docker, it was easy and inexpensive to create isolated environments for running
multiple instances of app tiers for each tenant. This was possible given the spin up speed
of Docker environments and it’s easy-to-use API, which we can use to spin containers
programmatically.

Rapid Deployment
Docker containers can be created and up in milliseconds. This is achieved by containers
by not booting up an OS and just running the application process. Moreover, the
immutable nature of Docker images gives you the peace of mind that things will work
exactly the way they have been working and are supposed to work.

. . .

Source: ~ https://www.airpair.com/docker/posts/8-proven-real-world-ways-to-use-
docker

Disclaimer: Content and Image source has been mentioned. Special Credit to concerned
folks.

Docker DevOps Cloud Computing Cloud

About Help Legal

You might also like