When you develop an application in any program, ask these questions!

What if many developers use different OS and versions on their local machines?
What if dependencies and libraries used by one developer and others are different?
What if the development team and testing team environment are different?
You can still ask different permutations and combinations of the above questions, but the central part remains the same - Environment consistency.
The environment we develop must be the same across all the developers and s the testing team so that we can't get any issues or bugs.
Any application includes source code, the language chosen, interpreter or compiler, dependencies, libraries, etc. Any change to the environment must be spread across all teams in the application, from development to deployment. The technology that provides this feature is called 'Containerization.' The platform that enables this technology is called Docker.
Note:
Don't confuse it with GIT, which primarily aims to have source code versions during development.
Docker is more of infrastructure consistency across all teams to make deployment easier.
We pack all the things required to run an app into one unit called 'Container.' This container can be moved and run on different machines irrespective of the host environment. This proves containers are entirely isolated from the local machine.
Implementation of Docker is as same as OOP programs,
Class= Images
Object=Containers
We use commands to create images and containers. Docker executes this.
How are Images built?
How is Container run?
Why do we need a Network?
What is Docker Compose?
What is the essence of multiple Containers?
How are multi-container applications executed?
These questions are explained in articles in depth.
Everything we do in Docker is for Environment consistency.