Docker — это инструмент, предоставляющий удобный интерфейс для работы с контейнерами. Процессу, запущенному под Docker, кажется, что он работает в минимальном окружении, где помимо него есть только его дети. Хотя при этом процесс работает в той же операционной системе, что и остальные, нормальные, процессы, он просто их не видит, ровно как не видит файлов и всего остального за пределами своей «песочницы». Можно думать о Docker, как о прокачанном chroot или аналоге FreeBSD Jails. Ну и в добавок вокруг всего этого накручено маркетинговой лапши, дескать «Docker является платформой для распределенных приложений» и прочее в таком духе.

В первом приближении Vagrant — это такой CLI для VirtualBox. То есть, утилита, которая говорит «создать виртуалку», «запустить виртуалку» и так далее. На самом деле, Vagrant представляет собой нечто куда большее. В частности, помимо VirtualBox есть немало других так называемых провайдеров — VMWare, Amazon EC2, LXC и libvirt.