What are Docker and Containers

I used Virtual Machine for several years to work with multiple applications and operating systems. That take my lost of space and capacity. After the searches, I have found the Docker! Docker is similar to VM in the outside view, but mostly different from architecture and workflows. Docker is different from the usage of a VM, because there is no worry about what operating system is being used.

Docker is an open-source project. The software/application modules automate the deployment of applications inside software containers.Containers help software to run while it is being moved from one environment to another environment such as from a developer’s computer to another development environment computer and this will have all of the things that are needed to run a program inside the container itself. It is basically a container which uses Linux Kernel features to create containers on top of an operating system.

The Source code, operating system requirements,required tools, dependency libraries, and other components are all inside an isolated container environment. Every modules are self-contained, so developers will not have to worry about what flavor of Linux is being used wherever the application is being deployed at a given time. Simply put, it will work everywhere.

The main benefits of the Containers are,

  • Containers are able to run anywhere. So it is highly portable and independent from the OS requirements.
  • Common size of the Containers are very small(depend on the developed software)
  • One or more containers can be placed on a single machine. They will work to gather with the user commands. So it may very cost efficient to the developer’s side and client side.
  • Containers are very easy to deploy in the clouds.
  • It is an open source solution from Docker
This image illustrates, How the clouds are using the Containers through Docker (source)

Here, You may get the draft idea about the docker and containers. But if you still confused about the virtual machine with docker containers, read this bellow paragraph to get some clear points.

Containers are using shared installed OS, but VM is required to install the particular OS to run the software. So as the require of VM, developer wants to install the OS. It will take a long time and want to configure the new OS to all dependencies and requirements. But building containers takes less time to complete. VM will take some more minutes to start as the OS, but containers are very quickly, they need some of the seconds to run the software.

This image illustrates the layer view of VM and Containers, So you can get the background of VM and Containers using this image. (Source)

Docker Components

  • Docker Client — User interface to the Docker which helps users to interact with the Docker Daemon. It will process the commands from the user and communicates with a Docker daemon.
  • Docker Daemon — Docker daemon runs on a host machine. A docker user can not interact with the daemon directly. Daemon provides the docker client to interact with it.
  • Docker Image — Predefined read-only modules that help to launch the containers and used to create the docker containers. Docker allows the developers to build new images or developer can simply change and update the images.
  • Docker Registry — Docker Registries will hold the docker images. These registries may be public or private from where you to host the images.Developers can easily change and update the images and able to upload that images to Docker registries.
  • Docker container — Container is an isolated & secure application platform which contains every modules which is needed for an application to run.
This image illustrates the main architecture of the Docker (source)

You can find the methods to install the Docker on Linux platform here. You can find the full docker information including install and usage guidelines here.

Reference:
https://www.hivelocity.net/kb/what-is-docker/
https://logz.io/blog/what-is-docker/