Book Image

Vagrant Virtual Development Environment Cookbook

Book Image

Vagrant Virtual Development Environment Cookbook

Overview of this book

Table of Contents (17 chapters)
Vagrant Virtual Development Environment Cookbook
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Introduction


The recipes in this book are focused mainly on the management and configuration of virtual machines (runtime environments that mimic the operation of entire operating systems). In actual use and operation of a virtual machine, however, there are typically only a few processes running in the machine that are of importance to development and deployment. For example, the deployment of web applications often requires the deployment of a web server (and perhaps some middleware applications), but a virtual machine with a full operating system will also run several processes required to manage the entire operating system of the virtual machine itself. As such, large deployments of virtual machines to service software applications can become more inefficient as computational resources are used for virtual environment operating systems rather than the computational needs of web applications.

While these problems are an issue for hypervisor applications, there have been other attempts to virtualize environments that do not require hypervisors. In fact, the isolation of processes into separate runtime environments and operating systems have been how most multiuser environments have operated since the beginning of the shared environment (from mainframe process isolation to technologies, such as Solaris Zones and BSD chroot jails). The Linux project (as of version 2.6.24 of the Linux kernel) introduced a similar technology called Linux Containers (LXC) to run separate processes in isolation from others without requiring hypervisor applications and separate operating systems.

An open source project was started by dotCloud (a cloud hosting company) to help manage the complexity of dealing with containers into simple build and deployment processes. This project was named Docker and has now grown to become the focus and the name of the company itself. Docker is focused on the use of containers on the Linux operating system. A single host operating system can host containers running software from databases to web servers, and even entirely different Linux distributions.

While there are other methods to manage Linux Containers, Docker has been integrated into a large number of vendor offerings that allows developers many choices to deploy applications packaged as Docker containers. In this appendix, we'll take a look at how Vagrant can integrate with Docker development workflows.