Docker is a container management service. The Docker keyword coined in DevOps for develop, ship and run anywhere why it is so because it enable the developers to easily develop the applications, ship the application into containers and later it can be deployed anywhere.
The Docker was released in March 2013 but has become buzzword due to the adoption of DevOps methodology in many software development organisation.
So What are Docker Containers?
We can say Docker Containers are another form of virtualisation.
In traditional hypervisor based virtualisation hypervisors allow the multiple Virtual Machines to run operating systems live with hosted application on a single host with their own set of dedicated resources, so each Virtual Machines OS appears to have their own virtulised hardware resources like CPU, memory, and other system resources dedicated for its own use.
Contrary to hypervisor based virtualisation Containers do not use hypervisor to virtulise their environment, they shared the operating systems which are more efficient than the hypervisors in system resource terms. Containers resides on top of a single Linux instance. This means you can “leave behind the useless 99.9 percent VM junk, leaving you with a small, neat capsule containing your application,” said James Bottomley.
Figure source: https://www.zdnet.com
On same hardware you can have multiple application instances in containers without facing over or under utilisation of CPU, memory or other resources.
Compare with VM, Docker is very fast as VM can take a few minutes at least in booting and be ready to OS and application to start where as Docker container will take few milliseconds to start from a container image.
Another good point with containers Continuous Integration/Continuous Deployment (CI/CD) is possible which is a part of DevOps methodology.