Vagrant and Docker with Microservices

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.

  1. 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?

  2. Can not connect to mongodb container
  3. docker-machine ssh on AWS
  4. docker.io - Docker linking between application & database containers
  5. How to get back to life docker container?
  6. Could not access a running Docker Image of War (with tomcat) in minishift - OpenShift-Origin
  7. ERR_EMPTY_RESPONSE for localhost when running Docker
  8. How is the interaction between Vagrant and Docker happening? Does the VM that I create using Vagrant contain Docker running inside it?

  • cannot run docker image with mounted folder
  • Docker - understanding start/run
  • vagrant variables in Dockerfile
  • Permission denied when changing docker image folder
  • Accessing Elastic Beanstalk environment properties in Docker
  • Docker Lavarel Storage Permission Error
  • One Solution collect form web for “Vagrant and Docker with Microservices”

    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

    1. You can safely remove containers anytime.
    2. 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.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.