Docker Architecture - Environment - Advantages

Introduction 

 
In the previous Docker Introduction - Docker Engine - Components article, we went through a basic introduction of Docker and its benefits over a Virtual Machine (VM). In this article, we will learn about Docker's actual architecture and its advantages.
 

Docker Architecture

 
Docker uses a client-server model which consists of Docker's client, Storage Components, Host. Registry/Hub and Network.
 
 
Docker Daemon
 
It's a listener for Docker API requests and Managing Docker objects such as images, volumes, Containers, and networks. It's a communication bridge to manage services.

Docker Client
 
Users can interact with the Docker using the Docker client. It provides Command-Line Interface(CLI) that allows a user to run, stop, and do appropriate action with command on Docker daemon.

Docker Host
 
It provides an environment where applications are run and executes. It also manages communication with another daemon to manages all the services. It comprises of the Images, Docker daemon, Networks, Storage, and Containers.

Docker Registry
 
Docker hub is a public registry that can be used by anyone. It's used to store Docker images.

Docker Objects
 
It's a collection of objects which are used to assemble your applications
  • Images
    A binary read-only template for build the containers, it contains metadata that briefs on the container's capability and dependencies. A major use of Images to store and moving applications from one platform to another. Docker Hub is an open public registry that can be used by any user but you can customize the registry by creating your container image which can be sharable within an organization or teams. A major effect of Images are can be updated so efficiently so that in case of any Dockerfile is updated then you just need to rebuild the image, that effect or rebuilt on the specific layer which you have changed, that makes Images lightweight, fast, and small compared to other virtualization technologies.
  • Containers
    Containers are the capsule in which your application is being wrapped. It's a fully portable thing that allows users to port within a specific supportive environment. Pre-defined access to resources defined in images. Containers are isolated from other containers with their host machine. Containers are smaller than VMs, they can be spun up in a few seconds, and result in much better server density.
  • Networks
    Docker networking is used to communicate all isolated containers with each other. It uses Container Network Model (CNM) for networking. Docker mainly uses five network drivers:
- Host
- Overlay
- Bridge
- Macvlan
- None
  • Docker Storage
    You can store the data using a writable layer of a container that required a storage driver. As its non-persistent, it will automatically perish once a container is stopped. Volume and Bind Mounts are two options for the container to store files in the host machine which persistent of files even after docker stops running.

Docker's supported platforms:


Desktop
 
Windows 10, Mac OS

Cloud
 
Amazon Web Services, IBM Cloud, Microsoft Azure, Google Compute Platform, and more.

Server
 
Windows Server 2016 and Various Linux distributions
 

Docker's Advantages

 
Quick and rapid deployment
 
It takes less time to the deployment process, Even containers for every process does not require to reboot an Operating system.
 
Separate isolation for each resource
 
Docker creates separation on your application. It ensures the container has its resource that is isolated from other containers. Docker also ensures that each application uses only the resources which are assigned to it. They can not access the resources which are allocated by others.
 
Portability
 
As Docker is able to bundle all dependencies and applications together, it allows us to easily move between development, test, and production environments.
 
Continuous testing and deployment
 
It ensures consistency in environments from development to production. It handles all internal configurations and dependencies.
 
Multi-cloud platform
 
Almost all cloud computing providers, Amazon Web service(AWS) and Google Compute Platform(GCP) provide Docker's support. Docker can be run inside Amazon EC2 instance, Rackspace server, Google Compute Engine instance, etc.
 
Security
 
Docker ensures that applications running on containers are separated or isolated from each other. This manages traffic control flow.
 

Summary

 
After going through this article and the previous ones, we learned about Docker's exact uses and benefits. Docker is the best to use for combined multiple applications by making a container. This is supported by many cloud services. In the next article, we will learn about the Installation & Configuration of Docker on Windows 10.