What is Docker?


Technically,

Docker is an implementation of Container Technology.


Lets take a step back and understand that one liner.

What are Containers

To understand Containers, lets see how we used to deploy application on a hardware. Traditionally we used to,


In above approach we need to install OS on each hypervisor partition which has following drawbacks,


Also, We can’t afford to install 2-3 apps on a single partition


Can we deploy Apps on same OS maintaining Isolated Runtime between them?

Here Container Technology come to rescue,

Container runs on a thin virtualization on top of Operating System


To understand above definition lets compare it with VM or hypervisor.

VM or hypervisor grabs physical resources like CPU, RAM, storage, networks etc and slices them into virtual versions i.e. virtual CPU, virtual RAM, virtual NICs etc and then it builds virtual machines out of them, which feels like normal physical servers.


Container Engines on the contrary, slice operating system resources instead of slicing physical server resources e.g. process namespace, the network stack,the storage stack, the file system hierarchy etc.
In effect, every container gets its own,


Summarizing above,

Container act as multiple isolated instances of user spaces on OS sharing a single common kernel


Benefits of using containers


Enough of containers lets get back to its implementation…

Docker

Components of Docker

Docker Engine

Docker engine/Docker daemon is a standardized runtime environment, that looks and feels the same no matter what platform it’s running on making application portability super simple.

Docker Images And Docker Containers

The relation between image and container resembles the relation between program and process i.e.

Container is running instance of Image.


Image layering

Volumes

Docker Registries / Docker Hub

Reference

SUBSCRIBE TO NEW CONTENT

Tutorials on System Design, BlockChain, Design Patterns and more sent out once a week.

Loading comments...