Howdy,
The short answer is that docker uses containers, rather than a full blown Virtual Machine. That means it uses less resources. The entire server doesn’t need to be virtualized.
I believe Docker used to use Linux Containers (LXC), I think it’s using a different form of container now.
There’s some discussion from a couple of years ago here on the differences you’re asking about:
http://stackoverflow.com/questions/16047306/how-is-docker-io-different-from-a-normal-virtual-machine