Docker Containers & Container Orchestration Basic Overview

Sagar Somwanshi
Javarevisited
Published in
3 min readDec 18, 2021

Docker is a computer program that performs operating-system-level virtualization, also known as “containerization“.

Docker responsibility is to build, ship, deploy applications without changing the image content in every environment (Dev/QA/UAT/PROD)

What is the Need For Docker:-

  1. To resolve the dispute (application not working on my machine (QA)*)
  2. Auto-scaling and auto-deployment and monitoring
  3. To get the exact configuration of the application
  • Matching versions of software
  • Matching version’s of the jar on Developer and QA/production System
  • Solve the problem of infrastructure or configuration

Virtual Machine vs Containers: -

virtual machine vs Container (copied image)

Virtual Machine:-

a].Virtual Machine performs Hardware-level virtualization
b].Start-up Time in Minutes
c].Each VM run on its own OS
d].Required More memory
e].Heavyweight

Containers:-

a].Containers perform operating-system-level virtualization
b].Start-up time in Milliseconds
c].All the Containers shared host OS
d].Required less memory compare to VM
e].Lightweight

Docker Architecture:-

Docker Architecture (copied Image)

Docker Client: User interface for Docker command Execution.
Docker Image: template of creating Containers
Docker Containers: Instance of docker image
Docker Daemon: A background process responsible for receiving commands and passing them to the containers via the command line.
Docker Registry: Commonly known as Docker Hub, this is where your container images are stored and retrieved. If required we can have our private repository as well.

Docker workflow:-

Docker Workflow (Copied Image)

Docker Google Trends:-

Google Trends For Docker (Copied Image)

Docker Compose: -

Docker Compose is used to run multiple containers as a single service

For example, suppose you have an application that required Spring Boot Service and My SQL Database, we could create one file which would start both the containers as a service without the need to start each one separately. In production systems, we may need to work with multiple containers together and start/stop them at the same time.

This is done through the docker-compose.yml file.

e.g

Container orchestration: -

  1. Container orchestration is the automation of all aspects of coordinating and managing containers. Container orchestration is focused on managing the life cycle of containers and their dynamic environments.

2. Container orchestration is used to automate the following tasks :
• Configuring and scheduling of a container

• Automated deployment and replication of containers

• Online scale-in or scale-out of container clusters.

• Availability of containers

• The configuration of applications in terms of the containers that they run in

• Allocation of resources between containers

• Load balancing, traffic routing, and service discovery of containers

• Health monitoring of containers

  • Securing the interactions between containers

3. Container orchestration can be implemented with Docker Swarm or Kubernetes

Thank you …..

References:

--

--

Sagar Somwanshi
Javarevisited

Technical Architect | AWS Certified | Micro-services developer | Spring boot | Docker | Jenkins | Oauth2.0 | WSO2 AM | Swagger 2.0|System Design