I have already published 1 blog regarding docker.
Today I am going to tell you difference between Docker and Viertual Machine(VM)
The main difference between docker and vm is their architecture.
In vm hypervisor plays very important role.
On top of hardware level it have hypervisor.
Hypervisor distributes the guest os and however os are there we can have that much applications. With each different os we have different kernels.
But in case of docker-
Lxc plays very imp role.
Lxc is basically linux container, is an operating-system-level virtualization method for running multiple isolated Linux systems (containers) on a control host using a single Linux kernel. (in vm concepts we should have different kernel for different os, this is main imp difference)
Lxc is an operating-system-level virtualization method for running multiple isolated Linux systems (containers) on a control host using a single Linux kernel.
The Linux kernel provides the cgroups functionality that allows limitation and prioritization of resources (CPU, memory, block I/O, network, etc.) without the need for starting any virtual machines , and also namespace isolation functionality that allows complete isolation of an applications’ view of the operating environment, including process trees, networking , user IDs and mounted file systems . 
LXC combines the kernel’s cgroups and support for isolated namespaces to provide an isolated environment for applications. Docker can also use LXC as one of its execution drivers, enabling image management and providing deployment services.