Docker is a platform which uses containers to deploy applications. We use containers because they are:
- Lightweight - they're much more efficient with system resources than virtual machines (VMs)
- Portable - they can be efficiently built, deployed and run anywhere
- Scalable - it's easy to increase and distribute containers across a datacenter
- Isolated - they are isolated from the host and other containers, and interact with their own private filesystem which is provided by the docker image (which includes everything needed to run an application).
Because containerized applications are so portable and the processes are easily reproducible, they can easily be scaled. To do so, we use orchestrators such as Kubernetes and Docker Swarm.