Vagrant can solve your problems (and can use Docker under the hood).
I use Vagrant for a while, because
And the list can go on. It has some overhead if you use it only for development, though. We use the same vagrant config for integration tests, too.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.