What is Docker ???
prerequisite: https://bansalkushagra.medium.com/virtualization-and-hypervisor-52ad268f0836
Docker Engine is a tool that creates containerization.
For example: suppose you develop an application after you transfer your code to the testing environment, The testing team response that your application is not working. Why ?? because external dependencies, Libraries, versions of the platform used are different(Version incompatibility). Which may/most probably not be available at the time of testing software.
The solution to this situation may be handle by sending libraries, version of tools used, dependencies and code everything together but still some software are built-in like in windows server .NET framework. Another solution is if we can send O.S. too with Application code and tools. Now we can see our problem is solved.
Well, In reality, it’s not possible to share our complete OS. That’s how hypervisor comes into existence. It helps to virtualize the environment means creating a virtual machine(Equally distributed resources or provided by the user as per the requirement).
Now using Hypervisor we can use different Servers in a single machine either ubuntu, windows server, Linx, etc etc. Now after adapting the Hypervisor technique we create our application on an ubuntu machine which now can be easily shared with our testing team.
Now after complete testing of an application or add-on other resources if required, sends to the production environment(Complete Image of the system).
Now, Why do we need docker ??
Docker is an advanced version of virtualization means containerization. In the case of hypervisor-1 means hypervisor is directly installed on the hardware, the VM created occupies the resources of the hardware either they are currently in process or not.
Therefore we can only have limited VM using hypervisor.
This problem is solved by docker. Docker also works like a hypervisor but VM made using docker are known as containers. Docker containers use hardware OS instead of their own OS. These containers occupy resources if they are in need if not they free-up the resources to make available for other containers.
Docker hub is something where all the dependencies, Software, images, etc like Windows server, Linux, Redis images.
If we want a Container of Ubuntu or other OS execute the docker command and it will run it on your machine where you run or test your application. This implies different teams can have the same dependencies, software, version, and tools anytime anywhere.
Developers prefer Docker over competitors because of its “rapid integration and build up,” while “security” was cited as a key factor in choosing rkt. Integration and build-up in a short period of time, reproducibility and testability, and so on. Rkt, or Rocket, is well-known for its speed, scalability, and security.
The Dockerfile and docker-compose configuration files are reusable as are available/perpetrate to code repo, allowing each team member to build their own development environment. Docker will ensure that all environments created are consistent. It saves a lot of time when it comes to planning setup and deployment documents, resulting in fast configurations with no inconsistencies. It also increases the efficiency in an automation process by standardizing the configuration interface.
More successful disaster recovery You can quickly replicate the file to new hardware using Docker.