
But at the same time, Docker allows you to provision those images and deliver fully configured containers at the end. There is no concept of ‘box’ as a basic environment on Docker, but you could define a minimally configured image as such. A container is in essence only a configured environment in which you are supposedly running a single application. It is something in between, and beyond.ĭocker provides ‘containers’ instead of ‘hosts’. On the other side, if you work a lot with virtualisation, you probably are working with Docker as well. Well, it is, in a way, if you work a lot with virtualisation. As you develop, you can have the Provisioner deploy parts of or the whole of your application, so you end up with a one-stop-solution: Vagrant, a provider, a provisioner and the required configurations to deploy your stack.

Vagrant also has a concept of ‘Provisioner’, which is the tool that deploys and configures your environment so you can get busy developing your application. Vagrant has a concept of ‘Provider’ as an application that provides a virtualised environment and VirtualBox and Libvirt match that concept nicely. It just does not feel mature, but that might be the years biting at me…Īnyways, getting VirtualBox and Libvirt up and running was quite easy. It might be me, but they all suffer from a badly defined application domain and a large ‘hackable’ instead of ‘pluggable’ architecture. Now, first off, at the time of writing, Vagrant, Docker and Ansible all seem rather twitchy application stacks. The request was to create a single Vagrantfile that would be able to provision the multi-host application to both host machines running through VirtualBox and Libvirt on one side and Docker containers on the other side. For a high end customer, I had to delve into the world of Vagrant, VirtualBox, Libvirt and Docker.
