Docker — Container era (PART-I)

Sowmya.L.R
4 min readAug 10, 2023

In earlier days people rarely used web apps. But in this digital era, every single task is done by any particular app. Ex grocery buying, food delivery, budget calculation, etc.., we could see many apps for all these daily tasks. This is significant progress in software evolution. All these apps are developed by a group of software engineers which would have involved a lot of effort from implementation to deployment.

When it comes to the Software Development process writing software as an individual will be easier than working with a team. Developing software in our machine will be easier than deploying it in a remote machine (say cloud or on-premises).

ISSUES FACED BY DEVELOPERS IN A TEAM

1. Dependency management

Let’s assume two or more people are working on a web application that had

backend — nodejs

frontend — react

database — PostgreSQL

Since many people involved in this project might use different versions of nodejs or even libraries that might differ in versions from person to person

Photo by Possessed Photography on Unsplash

2. Environment consistency

Every SE would have encountered this dialog

It worked on my machine. Donno what happened at the production ?

Many SEs wonder why the code is not working in the production environment. There are a lot more factors to be considered from development to deployment because both environments may differ in the operating system, the configuration of variables, etc..,

Photo by Elisa Ventur on Unsplash

3. Isolation

Multiple apps might be deployed on a machine. Sometimes few of the env or configured variables might become conflicting for a few apps because they don’t have a clear boundary in that system.

4. Scalability

If it is IPL season we can expect a high traffic rate in OTT platforms like Hotstar. Based on the incoming requests the app should scale itself without any manual interruption.

Photo by Aleksandr Popov on Unsplash

5. Deployment complexity

Apps can have multiple critical modules or services which combine together to serve their purpose. The challenging part is all these modules need to be combined as a single module logically whereas changes can be done independently without affecting the other modules.

In spite of these issues, SEs work efficiently with the help of the containerization concept.

What is containerization?

Containerization technology helps to bundle the application code along with its dependencies which include libraries and other configuration files into a container image. Docker is one such tool for creating containers.

Docker addresses these issues by providing a standardized platform for packaging, distributing, and running applications. It encapsulates an application and its dependencies into a single container, ensuring that the application behaves consistently across environments. Docker containers are lightweight, fast to start, and easy to move between different hosts.

Benefits of using docker

  1. Portability: Docker containers can run on any platform that supports Docker, ensuring consistency across development, testing, and production environments.
  2. Isolation: Each container is isolated from others, preventing interference between applications and ensuring better resource utilization.
  3. Dependency Management: Docker allows developers to define dependencies in a Dockerfile, ensuring that the required software and configurations are included in the container.
  4. Scalability: Docker containers can be easily scaled up or down, making it simpler to handle increased traffic or workload.

IS DOCKER THE ONLY SOLUTION?

Before docker, Virtual Machines (VMs) were mostly used for this.

Image: Google search

But there are a few differences between VMs and docker.

Image source: My system

In this part, we have covered the issues faced by developers and the containerization tool docker and its importance. Stay tuned for more updates about docker in the upcoming articles.

--

--