Toggle Menu

Insights / Tech Tips / Vagrant vs Docker: The Development Environment Challenge

July 09, 2015

Vagrant vs Docker: The Development Environment Challenge

2 mins read

Earlier this June, I gave a talk at DevOpsDays DC about a tool called Vagrant. Vagrant is an application that simplifies the process for setting up a virtual machine, and is compatible with Windows, Mac, and Linux operating systems.

The general goal of the DevOps movement is to improve collaboration and synergy between the Development and Operations infrastructure in an organization. My talk focused on a simple DevOps challenge: Use automation to make your development environment as similar as possible to the production environment. The benefit is reduced risk of surprises in production and reduced overhead when onboarding new developers.

I proposed Vagrant as an ideal solution for solving this problem. Vagrant integrates with the popular provisioning tools, such as Puppet, Chef, Ansible, Docker, and Salt, to deploy your development environment the exact same way as production.

I only had five minutes to talk, so I didn’t have time to get too in depth. There was one topic that I wish I had time to address: How does Vagrant compare to Docker for development environment automation?

Docker is a relatively new tool in the community. It takes advantage of LXC capabilities in Linux to create very lightweight, and isolated, software containers. Essentially, Docker solves the exact same problem I addressed with Vagrant: Create one automated environment, and use it in both production and development. Compared to Vagrant, Docker with Docker Compose is significantly more lightweight and quickly deployed.

Given that, I was not surprised when a developer at the conference asked, “why are you talking about Vagrant for a solution that Docker does better?”

The answer is simple: Many organizations are not ready to adopt Docker.

Small organizations may be able to refactor their entire infrastructure to work with Docker quickly. Most medium to large organizations aren’t so lucky. Ignoring the technical challenges of changing a production pipeline, you also have to consider procurement processes for training and support, security evaluations, etc. In fact, there’s a decent chance your current baseline operating system doesn’t even support Docker.

If your production system is already using provisioning software (even shell scripts!) the process for porting that to a Vagrant environment is much simpler. Additionally, the bureaucratic hurdles should be relatively non-existent, as you aren’t actually changing anything in production.

The reality is that Docker and Vagrant are both suitable tools for creating a development environment that closely reflects your production environment. If you’re stuck between these two options for your organization, you can pick either one or use both. Regardless of your choice, I encourage you to embrace the challenge of designing an automated development environment that matches production.

Want to hear more of my talk? Check out the video and slides

Video Link: https://livestream.com/uspto/DevOpsDay2015/videos/89951019

Slides Link: https://slides.com/m3brown/vagrant-for-non-developers

Do you use Docker or Vagrant? Tell us more about your experiences here!

You Might Also Like

Resources

Simplifying Tech Complexities and Cultivating Tech Talent with Dustin Gaspard

Technical Program Manager, Dustin Gaspard, join host Javier Guerra, of The TechHuman Experience to discuss the transformative...

Resources

How Federal Agencies Can Deliver Better Digital Experiences Using UX and Human-Centered Design

Excella UX/UI Xpert, Thelma Van, join host John Gilroy of Federal Tech Podcast to discuss...