Docker is a container management service which helps to Build-Ship-Run our software anywhere. In simple terms Docker aggregates all the dependencies and files of our software into a single container, which is then treated as an independent unit and can be shipped and run anywhere. Also, Docker containers are platform and OS independent.
If you ever read about docker, you must be knowing how it is advantageous over using Virtual Machines, but there are many other benefits of using docker :-
- Docker containers are allocated resources(CPU, Memory, Storage) dynamically based on their usage; unlike VM’s in which we have to pre-allocate all the resources.
- Reduced startup time as docker runs on top our host OS – saves boot-up time.
- We can have multiple instances of programs within a single container, or have multiple containers which can communicate with each other.
- Provides a consistent computing environment throughout the whole SDLC (dev,qa,prod)
Here is an image which explains how Docker is different from VM’s
Both Docker Container and VM requires an Infrastructure(hardware) and Host Operating System. Unlike Docker, Virtual Machines require another software called hypervisor -which helps to run Guest OS on top of Host OS- which require additional hardware resources and most of the functionalities of the guest OS are never used by our apps.
Whereas, Docker Containers – which are package of our app and its dependencies – just require a Docker Daemon which runs over our Host OS and is very light weight. Wait! whats docker daemon, hmm let us first go through all the terms which we will come across while working with Docker
Important terms related to Docker
- Docker Engine (Docker Daemon) : Docker engine is a part of docker which runs Docker container. And Daemon is just a computer program that runs as a background process, rather than being under the direct control of an interactive user. So Docker engine/ Docker Daemon runs in background and we run our containers on top of it.
- Docker Container : A Docker container is a live running instance of a Docker image. A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another.
- Docker Image : A Docker Image is the template (application plus required binaries, libraries, env variables and config files) needed to build a running Docker Container (the running instance of that image).
- Docker HUB : Docker hub is a repository on cloud for all your docker images (like github for code). It host pre-build images of famous software’s like wordpress, Ubuntu, centOS etc. You can also push your images to docker hub which can be used by anyone.
That’s all for this tutorial, in next tutorial we will dive into some technicalities and see how to install docker and how to pull and run a container.