I have a set of microservices whose deployment I would like to automate and standardize using Docker. I have been reading about Vagrant and I have a couple of questions on using Vagrant for setting up the environment.
I understand that Vagrant is used for setting up VM's and Docker for creating containers. What is the benefit of running a Docker container inside a VM? Doesn't it defeat the purpose of using Docker in the first place?
How is the interaction between Vagrant and Docker happening? Does the VM that I create using Vagrant contain Docker running inside it?
Answer for first question:
Vagrant is a way to quickly setup docker based container on your local machine. To run docker containers, you need linux kernel which you can provide either by running container on your physical machine. But having vagrant's provisioned vm and running containers will benefit in following way
- You can safely remove containers anytime.
- You can automate all docker commands via vagrant script.
Answer to second question:
Vagrant directly communicates with docker containers. Each docker container on VM gets their own IP and space. You may modify vagrant file for port forwarding per your machine need.
Hope it helps.