Vagrant and Docker
Portable Development Environments
Who we are
Feroj Bepari
Senior Software Engineer
Nascenia Ltd.
feroj@nascenia.com
Samiul Hoque
Senior Software Engineer
Nascenia Ltd.
samiul@nascenia.com
2
Development environments
made easy
Create and configure lightweight,
reproducible, and portable
development environments.
3
What Vagrant is
❏Development environment setup tool
❏Focused on automation
❏Lowers development environment setup time
❏Development - Production parity
❏No more “Works on my machine” excuses
4
Why Vagrant
❏Easy to configure
❏Reproducible and portable
❏Single consistent workflow
❏Industry-standard tools integration
5
Benefits of Vagrant
❏Isolate dependencies and their configuration
❏A single disposable, consistent environment
❏Creates a single Vagrantfile for a project and share with other
developer/designers
❏Others just need to run vagrant up and everything is installed and
configured for work.
6
Installation
❏ Download and Install
VirtualBox
https://www.virtualbox.org/wiki/Downloads
❏ Download and Install Vagrant
http://www.vagrantup.com/downloads
7
Let us create a VM
❏ Ubuntu Server 14.04 (trusty64)
❏ Git
❏ LAMP Stack
❏ Composer
❏ Node
❏ Redis
❏ Memcached
❏ Beanstalkd
❏ Supervisor
❏ PHPMyAdmin
❏ The Web Application:
➭ A laravel installation
➭ A mysql database for the
application
➭ Queue configuration
8
Initializing Vagrant
9
❏mkdir vagrant-test
❏cd vagrant-test
❏laravel new testvagrant
A fresh laravel will be installed in testvagrant directory.
❏vagrant init
A new Vagrantfile will be placed in the vagrant-test directory.
❏vagrant up
Updating Host OS Names Hosts File
10
Access the Sample Vagrant Project
The sample file is accessible at
https://github.com/samiuln/vagrant-test
11
Provisioners
❏Shell Scripts
❏Puppet
❏Chef
12
❏Ansible
❏Salt
❏Docker
An open platform for
distributed applications for
developers and sysadmins
Build, Ship, Run
13
What Docker is
❏High level
❏ A lightweight VM
❏ Own process space
❏ Own network interface
❏ Can run stuff as root
14
❏Low level
❏ Container = isolated processes
❏ Share kernel with host
❏ <<application container>>
Why Docker
❏Run everywhere
❏ Regardless of kernel version
❏ Regardless of host distro
❏ Physical or virtual, cloud or not
❏ Container and host architecture
must match...
15
❏Run anything
❏ If it can run on the host, it can run
in the container
❏ If it can run on a Linux kernel, it
can run
VMs vs. Containers
16
Why Container are Lightweight
17
Install Docker
❏Go to https://docs.docker.com/engine/installation/
❏sudo docker run hello-world
18
Docker Hub
❏More than 100,000 public images
❏Push your image to public repository
❏Use anywhere, any time :)
❏https://hub.docker.com/
19
Demo
❏Run mysql docker image from Docker hub
❏ docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e
MYSQL_DATABASE=wordpress -d mysql:5.7
❏Pull wordpress from docker hub
❏ docker pull wordpress
❏Run wordpress container from local
❏ docker run -e WORDPRESS_DB_PASSWORD=password -d --name wordpress --link
wordpressdb:mysql wordpress
20
Demo (contd.)
❏Show all docker container
❏ docker ps, docker ps -a
❏Inspect wordpress configuration
❏ docker inspect wordpress
21
Demo (contd.)
❏Where is my SOURCE CODE? :(
❏ docker run -e WORDPRESS_DB_PASSWORD=password -d --name
wordpress --link wordpressdb:mysql -p
127.0.0.2:8080:80 -v "$PWD/":/var/www/html wordpress
❏ TIRED typing command?
❏ Docker has a solution :)
22
Resources
❏https://github.com/ferojnascenia/docker-compose-wordpress/
❏https://hub.docker.com/
❏http://www.sitepoint.com/how-to-use-the-official-docker-wordpress-
image/
23
24
25

Vagrant and Docker

Editor's Notes

  • #4 Samiul
  • #5 Samiul Vagrant is a tool for building complete development environments. With an easy-to-use workflow and focus on automation, Vagrant lowers development environment setup time, increases development/production parity, and makes the "works on my machine" excuse a relic of the past.
  • #6 Samiul Vagrant provides easy to configure, reproducible, and portable work environments built on top of industry-standard technology and controlled by a single consistent workflow to help maximize the productivity and flexibility of you and your team. To achieve its magic, Vagrant stands on the shoulders of giants. Machines are provisioned on top of VirtualBox, VMware, AWS, or any other provider. Then, industry-standard provisioning tools such as shell scripts, Chef, or Puppet, can be used to automatically install and configure software on the machine.
  • #7 Samiul isolate dependencies and their configuration within a single disposable, consistent environment, without sacrificing any of the tools you're used to working with (editors, browsers, debuggers, etc.) creates a single Vagrantfile, you just need to vagrant up and everything is installed and configured for you to work.
  • #8 Samiul
  • #15 Feroj - Docker containers wrap up a piece of software in a complete filesystem that contains everything it needs to run: code, runtime, system tools, system libraries – anything you can install on a server. This guarantees that it will always run the same, regardless of the environment it is running in.
  • #17 Feroj
  • #19 Go to the universal docker installation page, which is super easy for even non tech people :P Run ‘hello-world’ container, from docker hub