Application Portability (problem without docker)
- So consider that you are a developer and working development environment.
- At this given moment you have a certain version of an operating system that is running.
- Your application has a certain number of dependencies and you have installed specific versions of these dependencies and then you deployed your application to the dev environment and it runs successfully.
So if you’re a developer your work is done right.
- This application needs to pass some tests in the testing environment.
- So the testing environment represented here on the right is somewhat similar to but not exactly the same as your development environment.
- So the version of the OS is a little newer and the version of a dependency is a little older in this environment.
- So what happens when your app gets deployed here but no longer works.
we need to fix this issue to run the application so it can run in the dev and test environment.
To solve this problem Docker was introduced in 2013.
What is Docker?
- Docker was released in 2013 as an open-source project by a company named dotCloud
- It is a containerization technology that will isolate the application in the same infrastructure.
- Docker is an open platform for developing, shipping, and running applications.
- Docker containers use the host’s operating system to run applications. which allows applications to use the same Linux kernel as a system on the host computer.
Advantages of docker over Virtual machines.
- Docker containers can start in seconds or milliseconds but to boot up a virtual machine may take 1–2 minutes.
- Containers are very lightweight and use less memory and CPU.
- It does not a require full operating system to run applications and it uses underlying hardware.
- Docker allows you to use a remote repository to share your container with others.
- Docker containers are process-isolated and don’t require a hardware hypervisor.
- Docker containers are much smaller and require fewer resources than a VM.
- Containers are highly portable. it’s easy to move containers around, even across environments, such as the public cloud, private cloud, and hybrid cloud.