The short answer is that if you want to manage machines, you should use Vagrant. And if you want to build and run applications environments, you should use Docker. Vagrant is a tool for managing virtual machines. Docker is a tool for building and deploying applications by packaging them into lightweight containers.
What is Vagrant and why to use it?
Vagrant is a tool for building and managing virtual machine environments in a single workflow. With an easy-to-use workflow and focus on automation, Vagrant lowers development environment setup time, increases production parity, and makes the "works on my machine" excuse a relic of the past.
Do people use Vagrant?
We use Vagrant at work and it serves us well. We do all of our provisioning with Chef however, using one cookbook for our Vagrant box and web servers. This allows us to achieve a more-or-less consistent configuration across all environments.