Oi Marcio, tudo bem? Vou fazer minha pequena adição aqui para sua pergunta.
As maiores diferenças relatadas são em relação a virtualização do ambiente. O Docker, utiliza uma estratégia de virtualização diferente, permitida pelo Kernel, onde ele isola todos os processos de execução em um container, porém há o compartilhamento do Kernel da máquina principal HOST. Isso o torna mais leve, visto que o Hardware e uma série de outras coisas não são virtualizadas, por mais leve, ele é mais rápido e por isso mais prático e não exige muito da máquina.
O Vagrant por outro lado, usa Virtualbox e cria sistemas de virtualizações completos, ou seja, o hardware é virtualizado, disco rígido, memória e tudo mais. Isso também garante isolamento, porém, exige mais da máquina já que é preciso virtualizar tudo. A questão ainda vai mais além, como por exemplo:
Docker é suportado nativamente apenas em ambientes Unix, onde o Kernel existe. No mundo Windows ainda não há essa possibilidade nativa. O Docker no Windows virtualiza um linux bem leve por baixo dos panos para fazer funcionar, é uma abordagem hibrida para fazer funcionar algo que parece nativo do sistema operacional, isso na minha opinião. Vou deixar alguns links para melhor aprofundamento:
https://www.upguard.com/articles/docker-vs-vagrant
https://www.quora.com/What-is-the-difference-between-Docker-and-Vagrant-When-should-you-use-each-one
Espero poder ter ajudado!