What is Docker?
Basically, Docker is a set of PaaS products that use OS-level virtualization to deliver software in package called containers.
What is a container?
A container is an entirely isolated environment with an application and its all dependencies, libraries, and configuration files, etc. An application in a container runs quickly and reliably from one computing environment to another. Containers have existed for 10 now and Docker utilizes Alex C containers.
Why we need Docker and Docker containers?
Docker container gives us an encapsulated, isolated, portable, scalable, and consistent virtual environment to run applications. It allows easy deployment to a cloud. Docker also reduces deployment time drastically. The environment remains consistent in the Docker container from start to end of the development process. Because of that testing and deploying process also becomes much easier. You can also change the environment inside a Docker container whenever you want. Docker also allows running each component in a separate container.
What is the difference between Docker containers and virtual machines?
The above diagram show how application run on a Docker and Virtual machine. The virtual machine(VM) on the left and the Docker containers on the right.
In the case of Docker, we have the underlying hardware infrastructure and then the OS, and then the Docker installed on the OS. Docker then manages the containers that run with libraries and dependencies alone.
In the case of VM, we have the hypervisor on the hardware then the virtual machine on them. (A hypervisor is computer software, firmware, or hardware that creates and runs virtual machines.) As we can see in the diagram each VM has its own OS inside it then the dependencies and the application.
- need higher disk space
- slow boot-up
- complete isolation
- need low disk space
- fast boot up
- less isolation(since more resources shared between the containers)