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