I was trying to keep open minded about this, but now that I am more experienced with Docker and Vagrant, I have to wonder, what was the reasoning for the Docker Provisioning.
For the concept, a provisioner I thought was a way to "configure" a system. So having a provisioner for docker confuses the scope, as Dockerfiles are not applied on a system level, only for running containers.
For the implementation, using the docker provisioner meant it would take about 20+ minutes to bring up the system. You can dramatically lower this to a few minutes just using a shell script, which is what I do in all of my tutorials, as the using vagrant for this is painful. Also, I don't understand what value you get using ruby methods/variables to orchestrate when shell commands using docker or docker-compose are far more flexible and capable, e.g. front loading environment variables. Ultimately, you just use args: with a big string.
Outside of the scope of the docker provisioner, using vagrant for docker, you lose the integration (cached images, etc) and performance. Brining up a container with docker-machine is fast, but with vagrant it is complex and slow. You could point docker-machine to a generic provider and backend it to vagrant, but then you don't have the integration (shared file system). With the new docker toolbox in beta, you get greater performance with xhyve (or on windows with hyperv) than out of virtualbox.
From that perspective, maybe another tool on top vagrant, or something similar docker-compose from Hashicorp, but as it stands, you lose more with vagrant for docker. I still use it in limited niche circumstances, when I need to test scripts that orchestrate docker in a pure Linux VM (such as ansible's docker modules or docker-compose), and in these niche use cases, I wouldn't use the docker provisioner. For day-to-day docker tooling, I would never use vagrant in general (I still use vagrant a lot for non-docker tooling).