DEV Community

Anirban Das
Anirban Das

Posted on

Docker : What & Why Docker ?

What is Docker ?

Docker is an opensource application for application development and packaging. It is lightweight in nature and due to this property, it is considered to be mostly acceptable platform for application developing, testing, shipping and packaging. With docker, application can be managed in isolated way in a different smallest unit which is called Container. Container is known as smallest unit of docker.
Docker can run multiple containers simultaneously in isolated way that helps a container run independently without any intervention. A container provides a same terminal environment to work where all pre-requisites are installed as part of image, so no need to worry about installation of basic utilities and packages.

Concept of Docker :

In the case of traditional virtual machine, hypervisor is installed on top of host operating system of physical hardware, that helps to virtualize underlying compute resources from physical hardware. The guest operating system on top the hypervisor is required to build virtual machines which also requires compute resources like cpu, memory and that is taken from underlying physical hardware through hypervisor. In this approach, hypervisor is there to virtualize compute resources from hardware, hence it is known as Hardware Virtualization.

But in case of container, container platform is installed in the place of hypervisor on top the host operating system, which virtualizes operating system instead of hardware and through this OS virtualization it takes access to underlying cpu, memory and disk spaces.

Image description

Docker Architecture :

Image description

There are below key components -

  1. Docker Daemon
  2. Docker Client
  3. Docker Host
  4. Docker Registry
  5. Docker Desktop

Docker Daemon :

Docker daemon is an background process which runs on docker host and listens all docker API requests from user like pull, push, build etc. This is responsible to manage all docker components like images, containers, networks, docker volumes etc. Once it receives API requests from user, it executes those operations. There are few functionalities mentioned below -

  • As part of container management, daemon is responsible to create, manage, delete containers based upon users request. Also, whenever required docker container is started, restarted or stopped by using docker client (CLI or GUI) that directly asks docker daemon to perform on behalf of user.

  • This is responsible to pull images from registry or push local customized image to registry.

  • Docker daemon utilizes host operating system's kernel to perform operation on containers. There is nothing added specifically with daemon to help services running, instead it takes advantage of OS virtualization due to which it captures all computes resources from host operating system.

Docker Client :

Docker client is the method by using an user can interact with docker daemon. This client can either be a CLI utility or GUI, by using any of these two methods, user is able to connect to docker daemon and provide instructions to perform. Once docker daemon receives the instructions from user, then it starts performing those actions.

Docker Host :

Docker host is a physical or virtual machine that runs docker and allocates compute resources to function containers properly.

Docker Registries :

A docker registry is a location where docker images are stored. There can be two different types of registries - Public and Private. Public registries are open to everyone and users can pull those images publicly and private registry requires authentication to pull or push.

Docker Desktop :

Docker desktop is a GUI version of application which can be installed in Windows, Linux and MAC. This enables users to manage containers, images and other from console.

Top comments (0)