Containerization is the process of using linux containers to deploy application. Containers have been there for quite some time, but their use for deploying applications is a novel use case. Docker is a platform which leverages containerisation tech to develop, deploy and run applications.
Lot of people confuse Docker containers with VMs or virtual machines, but there are signifiant differences between the two. Primary difference is that a container runs natively on linux and uses the same shared kernel of the host machine along with other containers running there. This makes containers really lightweight as compared to VMs. In a VM a fullblown sandboxed virtual machine is created which can access the resources of the host using hypervisor.
An image is nothing but an executable package that contains runtime, environment variable, config files , code — basically everything that you need to run the app. When the image runs — it is called the container.
Docker has started a whole paradigm shift in how developers build and deploy their applications and has truly heralded the era of cloud native development.