It depends on what you want to do. Vagrant's main use case is to automate setting up development environments, whereas I see Docker as more a way of distributing software and its dependencies to production systems.
A key distinction is that since Docker is built on Linux containers (lightweight Linux systems), it expects to share its host's kernel, and must thus be executed on a Linux system.
A key distinction is that since Docker is built on Linux containers (lightweight Linux systems), it expects to share its host's kernel, and must thus be executed on a Linux system.