1) over SSH, or 2) by Vagrant when provisioning a VM.
Docker, on the other hand, provisions it's containers from a rather simplistic Dockerfile, which is just a list of commands. The current solution to provision a container through ansible is rather messy[1], and shows that Docker's configuration doesn't display the same separation-of-responsibilities as Vagrant's does.
Luckily, this lets me use Docker as another provider through the Vagrant API. Woooo!
http://www.ansible.com/blog/2014/02/12/installing-and-buildi...