I sometimes get asked “so what do the internal Magento developers use when developing?” We do not mandate a particular approach, but there is an unofficial Vagrant box that a number of the internal developers use now. Alex made it public, but it might not be well known: https://github.com/paliarush/magento2-vagrant-for-developers
“Hey, Alan! I though you were a Docker geek!” I like Docker personally, but it does feel in general like Vagrant is a bit better for professional developers. For example, PHP Storm has Vagrant support built in that appears a bit more polished / robust than the built in Docker support. I do however think Docker is a bit easier to install just now – e.g. https://alankent.me/gsd has how to locally install a Luma store going in a few minutes, with a good Internet connection! That it why I used it for exercises with my book on themes.
The outstanding list of items Alex wants to improve on for the above Vagrant box is long. Feedback on whether people find this Vagrant box useful would be of interest. If enough people say “make this official and supported” we may do so. Right now it is just Alex making his personal efforts available to the community. (Thanks Alex!) There are certainly other Vagrant boxes around as well.
I will say the approach of Vagrant and Docker (or just VM’s in general) appeals to me for professional developers as it makes it easier to switch between projects and make sure you have the right set of tools (PHP version etc) for that project. If you have to jump projects, no-one wants to futz around getting the right versions of all the tools in your PATH etc variables.
Disclaimer: This post is my own, not that of my employer, not officially binding, not a promise of solving world hunger. Alex and I both work for Magento.