Traditionally, my company has used Vagrant for our the dev environments of each of our projects. We have a handful of rails apps setup to communicate as micro services. With Vagrant, we are able to set static IP addresses for each of the Vagrant hosts by using setting up a common private network between the various Vagrant hosts.
Recently, we had a new team member join our team who was familiar with Docker and he proceeded to write a new microservice using Docker and Docker Compose. Really good stuff. Very elegant and straight forward way to provision the service.
However, one difficulty we had with Docker for OSX (in beta) is that the Docker host itself does not seem to have a way of exposing the Docker host in a way that other non-Docker containers/VMs (i.e. our Vagrant-based microservices) to receive HTTP requests. Docker Toolbox (the predecessor to Docker for OSX) does have a command line option that will return the Docker host's IP address, but that ends up being a bit kludgey.
From my understanding, this is only a limitation on OSX and should not be a problem on Linux.
I know this is a bit of an edge case, but I just wanted to share my recent experience.
From what I've seen, Docker, especially with docker-compose, is definitely the way forward for quickly provisioning a development environment for a stand alone project. However, if for some reason you're going to be mixing Vagrant VMs with Docker containers on OSX, you'll probably need to choose one or the other, at least for now.