They're not mutually exclusive. Vagrant is for providing a copy of the production environment on a development machine easily and reproducibly. If you use Docker in production, then you should also include it in your Vagrant image. If you don't, then don't. If your goal is just to provide a copy of prod for developers, and you don't currently use Docker, then you probably just want Vagrant. Good presentation (sales pitch? :D) by the creator Vagrant: https://youtu.be/Im4wNqlolqQ