Docker is a set of tools that allow us to easily run containers and containerised apps. Why use Docker and these so called "containers"?
Well, containers are extremely useful as they are very lightweight and have minimal overheads. We can package an app along with just its dependencies and can isolate this into a container. These containers can then be run on absolutely any platform with a Docker engine. It has other benefits too like minimal storage requirements, resource isolation, security, namespacing (isolating resources per process or a group of processes), availability and elasticity in the cloud, and much more!