Docker VS VMs

As per wiki

Docker is an open-source project that automates the deployment of applications inside software containers, by providing an additional layer of abstraction and automation of operating-system-level virtualization on Linux.

A virtual machine (VM) is an emulation of a particular computer system.

So which one is better, and have any of you ever experienced both in terms of performance and development efficiency.