What is Docker and its advantages

Docker

Introduction to Docker

Docker is the one VM replacement for multiple VMs. As per the creator from Docker.com “Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications, whether on laptops, data center VMs, or the cloud”. This definition itself explanatory that Docker is one stop solution for developers where a developer not only develop the solution but can go away with your application as well. Docker is written in Golang (Google’s language).

Importance of docker in software development practices

Prior to go directly into Dockers importance what is concept of a container. Container is a concept that contain the application build in itself. That container contains all the settings software configuration and other stuff that is easily portable from one machine to another machine. Anyone can install Docker daemon on his machine and deploy that docker container very easily just by importing the container.

As soon as we import the container it automatically install all the necessary software that is required for that application. It doesn’t only save networking cost but also gives a flexibility to run any number of container on docker. That’s why Docker plays important on not only in application testing on every environment uniformly but it also resolved the problem to “Verify it in my environment”
In the nutshell below are some of the major relief.

  • Application can be easily deployed with all configuration settings very easy.
  • Run any number of container on Docker
  • Export and Import container easily
  • Resolve “Verify it in my environment” problem

Who all are using Docker

  • Paypal
  • Ebay
  • Expedia
  • BBC News
  • Groupon
  • Shopify
  • Uber
  • many more global leaders

Simple Case Study: Verify it in my environment

Suppose we need do regression testing of any website then, to ensure proper working on various different environment for example various browsers on linux, windows or mac.

Earlier Solution:

Create different multiple virtual machines one for linux, one for windows , one for mac etc..

Problem with current solution:

What is the issue to go with virtual machine based solution. and the answer is simple that its costly solution (in terms of getting multiple VMs, multiple licenses, installation etc..)

Advantage of using Docker

  • Replacement of multiple VMs.
  • No licensing cost for different machine or OS
  • Its lightweight
  • Its Open Source alternative for virtualization
  • You can easily export application and import it anywhere else locally (through docker registry) or through internet (through docker hub)

Typical architecture of a machine with Docker based app development

Docker_layer_architecture

Note: Here its notable that only top layer of is writable other layers are read only. For example

Docker’s availability:

Docker is available in two edition

  • Community Edition: Which is open source, free to deployment on any server. It has container engine with network and security. It is for small team who is looking to get started with docker and get started with it.

 

  • Enterprise Edition: Docker Enterprise edition is for large team who run, build and ship large and critical application.

 

 

In this article we will focus on Docker CE version only.

 

Docker installation on Windows

Installation

Go to https://store.docker.com/editions/community/docker-ce-desktop-windows and click on “Get Docker” link it will download “InstallDocker.msi” file from there. Just download and double click on it. You are done.

 

Running from command line:

When the installation finishes, Docker starts automatically. The whale in the notification area indicates that Docker is running, and accessible from a terminal. Just run the command to test the docker from command line.

 

docker version

 

docker_Commandline

Will see next article soon that will give you hands on experience.

 

 

 

The following two tabs change content below.

Chandra Shekhar

GCP Architect
Chandra Shekhar Pandey is Google certified Cloud engineer, I am Magento2 Trained developer. Having huge experience in designing cloud solution. I have around 12 years of experience with world enterprise IT companies and fortune 500 clients. During my architecture design I am always caring about high availability, fast performance and resilient system. From the programmer background I have huge experience in LAMP stack as well. Throughout my carrier I have worked on Retail, E-Learning, Video Conferencing and social media domain. The motive of creating cutehits was just to share the knowledge/solutions I get to know during my day to day life so that if possible I can help someone for same problems/solutions. CuteHits.com is a really a very effort for sharing knowledge to rest of the world. For any query/suggestion about same you can contact me on below details:- Email: shekharmca2005 at gmail.com Phone: +91-9560201363

Latest posts by Chandra Shekhar (see all)

You may also like...