Slide 1

Slide 1 text

Docker in Practice Using Linux containers to run non-trivial architectures. Carlos Souza github.com/caike twitter.com/caike

Slide 2

Slide 2 text

Efficient Developers Quickly write and deploy applications to solve problems. Docker in Practice

Slide 3

Slide 3 text

Efficient Developers Quickly write and deploy applications to solve problems. Docker in Practice 1,000,000 things could go wrong 1,000,000 things
 will go wrong

Slide 4

Slide 4 text

Docker in Practice The Problem In Development: • Install language • Install dependencies • Install database • Link everything up

Slide 5

Slide 5 text

Docker in Practice The Problem In Development: • Install language • Install dependencies • Install database • Link everything up • Mess everything up and start again

Slide 6

Slide 6 text

Docker in Practice Development localhost App Server DB Server

Slide 7

Slide 7 text

Docker in Practice

Slide 8

Slide 8 text

In Production: The Problem • Install language • Install dependencies • Install database • Install web server • Link everything up

Slide 9

Slide 9 text

In Production: The Problem • Install language • Install dependencies • Install database • Install web server • Link everything up • Mess everything up and spend time fixing it

Slide 10

Slide 10 text

Docker in Practice

Slide 11

Slide 11 text

Docker in Practice Heroku is Sweet... Platform as a Service (PaaS)

Slide 12

Slide 12 text

Docker in Practice Heroku Can Get Pricey

Slide 13

Slide 13 text

Docker in Practice Heroku is Too Sweet Y'all Got Anymore of Them PaaS

Slide 14

Slide 14 text

Development / Production Disparity App Server DB Server

Slide 15

Slide 15 text

Development / Production Disparity Web Server App Server DB Server App Server App Server DB Server

Slide 16

Slide 16 text

Development == Production Web Server App Server DB Server App Server Web Server App Server DB Server App Server

Slide 17

Slide 17 text

Docker in Practice Nginx NodeJS NodeJS MongoDB The Tech We'll Use

Slide 18

Slide 18 text

Docker in Practice Solution #1 - All In One Nginx NodeJS NodeJS MongoDB Linux OS process process process process • Single OS • Multiple Processes • No Isolation

Slide 19

Slide 19 text

Docker in Practice Solution #2 - Virtual Machines Nginx VM OS VM OS VM OS VM OS Host Linux OS process process process process • Single Host OS • Multiple VM OS • Isolated Processes • Resource Intensive

Slide 20

Slide 20 text

Docker in Practice Solution #3 - Linux Containers Nginx NodeJS NodeJS MongoDB Linux OS container container container container process process process process • Single OS (shared kernel) • Multiple Containers • Isolated Processes • Low overheard

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Docker Makes it easy to work with Linux containers. Docker in Practice

Slide 23

Slide 23 text

Docker in Practice Container Architecture Nginx NodeJS NodeJS MongoDB Linux OS (Docker host)

Slide 24

Slide 24 text

Docker in Practice Container Architecture Nginx NodeJS NodeJS MongoDB Linux OS (Docker host) • Separate applications from infrastructure • Shorten the cycle between writing code and running code

Slide 25

Slide 25 text

[ code demo ]

Slide 26

Slide 26 text

Build once and never change it again. Docker in Practice Immutable Infrastructure

Slide 27

Slide 27 text

Using Ansible we can automate server provisioning and deployment. Docker in Practice Automating Production

Slide 28

Slide 28 text

Docker in Practice Ansible Nginx NodeJS NodeJS MongoDB Production Linux OS 
 (Docker host) • Installs Docker • Fetches Docker images • Uploads source code • runs `docker-compose up` • (build images and run processes) Running On The Server:

Slide 29

Slide 29 text

[ code demo ]

Slide 30

Slide 30 text

Resources: Learning More • docker.com • dockerbook.com by James Turnbull • twitter.com/docker • pluralsight.com

Slide 31

Slide 31 text

Next Steps: Automate All The Things • Use Dockerhub • Use Github • Multi-Container Logging • Docker Swarm / Kubernetes

Slide 32

Slide 32 text

Thank you! Carlos Souza github.com/caike twitter.com/caike