9. Static website Web frontendUser DB Queue Analytics DB
Development
VM
QA server Public Cloud Contributor’s
laptop
Docker is a shipping container system for codeMultiplicityofStacks
Multiplicityof
hardware
environments
Production
Cluster
Customer Data
Center
Doservicesandapps
interact
appropriately?
CanImigrate
smoothlyandquickly
…that can be manipulated using
standard operations and run
consistently on virtually any
hardware platform
An engine that enables any
payload to be encapsulated
as a lightweight, portable,
self-sufficient container…
10. Static website
Web frontend
Background workers
User DB
Analytics DB
Queue
Developme
nt VM
QA Server Single
Prod
Server
Onsite
Cluster
Public
Cloud
Contributo
r’s laptop
Customer
Servers
Docker eliminates the matrix from Hell
11. Why Developers Care
•Build once…(finally) run anywhere*
•A clean, safe, hygienic and portable runtime environment for your app.
•No worries about missing dependencies, packages and other pain points during subsequent
deployments.
•Run each app in its own isolated container, so you can run various versions of libraries and
other dependencies for each app without worrying
•Automate testing, integration, packaging…anything you can script
•Reduce/eliminate concerns about compatibility on different platforms, either your own or
your customers.
•Cheap, zero-penalty containers to deploy services? A VM without the overhead of a VM?
Instant replay and reset of image snapshots? That’s the power of Docker
* With the 0.7 release, we support any x86 server running a modern Linux kernel (3.2+ generally. 2.6.32+ for RHEL 6.5+, Fedora,
& related)
12. Why Devops Cares?
•Configure once…run anything
•Make the entire lifecycle more efficient, consistent, and repeatable
•Increase the quality of code produced by developers.
•Eliminate inconsistencies between development, test, production, and customer
environments
•Support segregation of duties
•Significantly improves the speed and reliability of continuous deployment and continuous
integration systems
•Because the containers are so lightweight, address significant performance, costs,
deployment, and portability issues normally associated with VMs
13. Why it works—separation of concerns
•Dan the Developer
•Worries about what’s ―inside‖ the
container
•His code
•His Libraries
•His Package Manager
•His Apps
•His Data
•All Linux servers look the same
•Oscar the Ops Guy
•Worries about what’s ―outside‖ the
container
•Logging
•Remote access
•Monitoring
•Network config
•All containers start, stop, copy, attach,
migrate, etc. the same way
14. App
A
Containers vs. VMs
Hypervisor (Type 2)
Host OS
Server
Guest
OS
Bins/
Libs
App
A’
Guest
OS
Bins/
Libs
App
B
Guest
OS
Bins/
Libs
AppA’
Docker
Host OS
Server
Bins/Libs
AppA
Bins/Libs
AppB
AppB’
AppB’
AppB’
VM
Container
Containers are isolated,
but share OS and, where
appropriate, bins/libraries
Guest
OS
Guest
OS
…result is significantly faster deployment,
much less overhead, easier migration,
faster restart
15.
16. What are the basics of the Docker system?
Source Code
Repository
Dockerfile
For
A
Docker Engine
Docker
Container
Image
Registry
Build
Docker
Host 2 OS (Linux)
ContainerA
ContainerB
ContainerC
ContainerA
Push
Search
Pull
Run
Host 1 OS (Linux)
17.
18. Ecosystem - Startups
DOCKER CONTAINER HOSTING
- https://stackdock.com/ - Docker hosting on blazing fast dedicated infrastructure
- https://orchardup.com/ - Host your Docker containers in the cloud
- http://tutum.co/ - IaaS-like control, PaaS-like speed
PRIVATE DOCKER REGISTRY
- https://quay.io/ - Secure hosting for private Docker repositories
DOCKER ORCHESTRATION
- https://flynn.io/ - The product that ops provides to developers
- https://coreos.com/ - Linux for Massive Server Deployments
- http://www.serfdom.io/ - A decentralized solution for service discovery and orchestration that is
lightweight, highly available, and fault tolerant
19. Ecosystem - OSS
lBoot2docker - lightweight Linux distro (~24MB and boots in ~5s)
lDeis - open source PaaS
lDokku - Docker powered mini-Heroku in around 100 lines of Bash
lShipyard – A web UI for docker
lDockerui - Another web UI for docker
22. Microservice Architecture
The term "Microservice Architecture" has sprung up over the last few years to describe a particular way of
designing software applications as suites of independently deployable services. While there is no precise
definition of this architectural style, there are certain common characteristics around organization around
business capability, automated deployment, intelligence in the endpoints, and decentralized control of
languages and data.
Martin Fowler