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.

 

 

 

 

Related posts:

The following two tabs change content below.

Chandra Shekhar

Consultant at Infogain
Chandra Shekhar is a LAMP Developer,Thinker,Blogger and currently working as Magento(Ecommerce) specialist.. I am always open to learn new things in LAMP as well as other newer technology. In the journey of my last 9 years of web and product development, I have decided to share my knowledge and experience to Open Source Community in 2011. In this regard I have started CuteHits.com. Since then I am actively sharing my knowledge on various LAMP technology through CuteHits.com’s technical ... Read More about Chandra Shekhar

Latest posts by Chandra Shekhar (see all)