SlideShare una empresa de Scribd logo
1 de 43
The challenge of application 
distribution 
Introduction to Docker
Credits & references 
Intros slides borrowed from 
• dotCloud’s « Docker introduction » slideshow 
• AWS re:Invent 2014 session APP303, « Lighting Fast Deploys with 
Docker Containers and AWS »
Agenda 
• The application distribution challenge 
• The current solutions 
• Introduction to Docker, Containers, and the Matrix from Hell 
• Why people care: Separation of Concerns 
• Technical Discussion 
• Ecosystem, momentum 
• How to build Docker images 
• How to make containers talk to each other, how to handle data 
persistence 
• Demo 1: isolation 
• Demo 2: real case - installing Go Math!, tail –f containers, unit 
tests
The challenge
The challenge: apps have fundamentally changed 
~2000 2014 
Long lived Development is iterative and 
constant 
Monolithic and built on a 
single stack 
Built from loosely coupled 
components 
Deployed to a single server Deployed to a multitude of 
servers
Everybody already heard/said it:
The challenge: apps have fundamentally changed 
Static website 
User DB 
Redis + redis-sentinel 
Web frontend 
Queue Analytics DB 
Background workers 
API endpoint 
nginx 1.5 + modsecurity + openssl + bootstrap 2 
postgresql + pgv8 + v8 
hadoop + hive + thrift + OpenJDK 
Ruby + Rails + sass + Unicorn 
Python 3.0 + celery + pyredis + libcurl + ffmpeg + libopencv + 
nodejs + phantomjs 
Python 2.7 + Flask + pyredis + celery + psycopg + postgresql-client 
Development VM 
QA server 
Public Cloud 
Disaster recovery 
Contributor’s laptop 
Production Servers 
Multiplicity of 
Stacks 
Multiplicity of 
hardware 
environments 
Production Cluster 
Customer Data Center 
Do services and 
apps interact 
appropriately? 
Can I migrate 
smoothly and 
quickly?
The Matrix From Hell 
Static website 
Web frontend 
Background workers 
User DB 
Analytics DB 
Queue 
? ? ? ? ? ? ? 
? ? ? ? ? ? ? 
? ? ? ? ? ? ? 
? ? ? ? ? ? ? 
? ? ? ? ? ? ? 
? ? ? ? ? ? ? 
Dev VM QA Server 
Single Prod 
Server 
Onsite 
Cluster 
Public Cloud 
Contributor’s 
laptop 
Customer 
Servers
The current solutions
Current solutions 
• ‘Configuration’ tools like Ansible, Chef, Puppet, … 
• VM tools : Vagrant 
• Container tools: Google’s LMCTFY
Goods 
Multiplicity of 
transporting/storing 
Multipilicity of 
methods for 
Do I worry about 
how goods 
interact (e.g. 
coffee beans next 
to spices) 
Can I transport 
quickly and 
smoothly 
(e.g. from boat to 
train to truck) 
Cargo Transport Pre-1960
Also a matrix from hell 
? ? ? ? ? ? ? 
? ? ? ? ? ? ? 
? ? ? ? ? ? ? 
? ? ? ? ? ? ? 
? ? ? ? ? ? ? 
? ? ? ? ? ? ?
Multiplicity of 
Goods 
Multiplicity of 
methods for 
transporting/storin 
g 
Do I worry about 
how goods 
interact (e.g. 
coffee beans next 
to spices) 
Can I transport 
quickly and 
smoothly 
(e.g. from boat to 
train to truck) 
Solution: Intermodal Shipping Container 
…in between, can be loaded 
and unloaded, stacked, 
transported efficiently over long 
distances, and transferred from 
one mode of transport to 
another 
A standard container that is 
loaded with virtually any 
goods, and stays sealed until 
it reaches final delivery.
Containers applied to software
Static website User DB Web frontend Queue Analytics DB 
Dev VM 
QA server Public Cloud 
Contributor’s 
laptop 
Docker is a shipping container system for code 
Multiplicity of 
Stacks 
Multiplicity of 
hardware 
environments 
Production 
Cluster 
Customer Data 
Center 
Do services and 
apps interact 
appropriately? 
Can I migrate 
smoothly and 
quickly 
…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…
Static website 
Web frontend 
Background workers 
User DB 
Analytics DB 
Queue 
Dev VM QA Server 
Single Prod 
Server 
Onsite 
Cluster 
Public Cloud 
Contributor’s 
laptop 
Customer 
Servers 
Docker eliminates the matrix from Hell
Good for developers 
• 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 
* Anywhere = any x86 server running a modern Linux kernel (3.2+ generally. 2.6.32+ for RHEL 6.5+, Fedora, & 
related)
Good for (Dev)Ops 
• 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
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
Under the hood 
• To learn more about how it works, some background: 
–Linux namespaces 
• PID 
• IPTables 
• UTS (~hostname) 
• Mount 
• IPC (inter-process) 
–CGroups 
–LXC Containers
Containers vs. VMs 
App 
A 
Bins 
/ 
Libs 
Bins 
/ 
Libs 
Bins 
/ 
Libs 
Hypervisor (Type 2) 
Host OS 
Server 
Guest 
OS 
App 
A’ 
Gues 
t 
OS 
App 
B 
Gues 
t 
OS 
App A’ 
Docker 
Host OS 
Server 
App A 
Bins/Libs 
Bins/Libs 
App B 
App B’ 
App B’ 
App B’ 
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
Why are Docker containers lightweight? 
VMs Containers 
App 
A 
Bins 
/ 
Libs 
Original App 
(No OS to take 
up space, resources, 
or require restart) 
App 
Δ 
Bins 
/ 
App 
A 
Bins 
/ 
Libs 
App 
A’ 
Bins 
/ 
Libs 
Gues 
t 
OS 
Modified App 
Copy on write 
capabilities allow us to 
only save the diffs 
between container A 
and container A’ 
VMs 
App 
A 
Bins 
/ 
Libs 
Guest 
OS 
Every app, every copy of an 
app, and every slight modification 
of the app requires a new virtual server 
App 
A 
Copy of 
App 
No OS. Can 
Share bins/libs 
Guest 
OS 
Guest 
OS
Containers, images, …
Terminology 
Docker concept OOP analogy 
Dockerfile Source code 
Image Class 
Container Instance
What are the basics of the Docker system? 
Dockerfile 
For 
A 
Source 
Code 
Repositor 
y 
Docker Engine 
Docker 
Container 
Image 
Registry 
Build 
Docker 
Host 2 OS (Linux) 
Container A 
Container B 
Container C 
Container A 
Push 
Search 
Pull 
Run 
Host 1 OS 
(Linux)
Changes and Updates 
App 
A’’ 
Bins 
/ 
Libs 
Docker Engine 
Docker 
Container 
Image 
Registry 
Push 
Update 
Docker Engine 
App 
A 
Bins 
/ 
Libs 
App 
Δ 
Bins 
/ 
Base 
Container 
Image 
Host is now running 
A’’ 
Container 
Mod A’’ 
App 
Δ 
Bins 
/ 
App 
A 
Bins 
/ 
Libs 
Bins 
/ 
Host running A wants to upgrade to A’’. 
Requests update. Gets only diffs 
Container 
Mod A’
A new open source project… or the next big thing? 
• Compatible with Jenkins, Travis, Chef, Puppet, Vagrant and OpenStack… 
• Ecosystem: lots of tools, even by serious contributors (Google – 
Kubernetes, cAdvisor - NetFlix …), new IAAS provider emerge (like 
Tutum), 
• Supported by Amazon, Google, Microsoft, Rackspace, Digital Ocean, 
Joyent, RedHat, … 
• Momentum... See pull requests numbers and frequency to get an idea 
• Used in production… even by big players (HP, Ebay, New Relic, Etsy, 
Yelp, Spotify, …)
Ecosystem Support 
• Operating systems 
– Virtually any distribution with a 2.6.32+ kernel 
– Red Hat/Docker collaboration to make work across RHEL 6.4+, Fedora, and other members of the family (2.6.32 
+) 
– CoreOS—Small core OS purpose built with Docker 
• OpenStack 
– Docker integration into NOVA (& compatibility with Glance, Horizon, etc.) accepted for Havana release 
• Private PaaS 
– OpenShift 
– Solum (Rackspace, OpenStack) 
– Other TBA 
• Public PaaS 
– Deis, Voxoz, Cocaine (Yandex), Baidu PaaS 
• Public IaaS 
– Native support in Rackspace, Digital Ocean,+++ 
– AMI (or equivalent) available for AWS & other 
• DevOps Tools 
– Integrations with Chef, Puppet, Jenkins, Travis, Salt, Ansible +++ 
• Orchestration tools 
– Mesos, Heat, ++ 
– Shipyard & others purpose built for Docker 
• Applications 
– 1000’s of Dockerized applications available at index.docker.io
Use Cases 
• Ted Dziuba on the Use of Docker for Continuous Integration at Ebay Now 
– https://speakerdeck.com/teddziuba/docker-at-ebay 
– http://www.youtube.com/watch?feature=player_embedded&v=0Hi0W4gX--4 
• Sasha Klizhentas on use of Docker at Mailgun/Rackspace 
• http://www.youtube.com/watch?feature=player_embedded&v=CMC3xdAo9RI 
• Sebastien Pahl on use of Docker at CloudFlare 
• http://www.youtube.com/watch?feature=player_embedded&v=-Lj3jt_-3r0 
• Cambridge HealthCare 
• http://blog.howareyou.com/post/62157486858/continuous-delivery-with-docker-and- 
jenkins-part-i 
• Red Hat Openshift and Docker 
• https://www.openshift.com/blogs/technical-thoughts-on-openshift-and-docker
Use Cases—From the Community 
Use Case Examples Link 
Clusters Building a MongoDB cluster using docker http://bit.ly/1acbjZf 
Production Quality MongoDB Setup with Docker http://bit.ly/15CaiHb 
Wildfly cluster using Docker on Fedora http://bit.ly/1bClX0O 
Build your own PaaS OpenSource PaaS built on Docker, Chef, and Heroku Buildpacks http://deis.io 
Web Based 
JiffyLab – web based environment for the instruction, or lightweight use of, 
Environment for 
Python and UNIX shell 
Instruction 
http://bit.ly/12oaj2K 
Easy Application 
Deployment 
Deploy Java Apps With Docker = Awesome http://bit.ly/11BCvvu 
How to put your development environment on docker http://bit.ly/1b4XtJ3 
Running Drupal on Docker http://bit.ly/15MJS6B 
Installing Redis on Docker http://bit.ly/16EWOKh 
Create Secure 
Sandboxes 
Docker makes creating secure sandboxes easier than ever http://bit.ly/13mZGJH 
Create your own SaaS Memcached as a Service http://bit.ly/11nL8vh 
Automated Application 
Deployment 
Multi-cloud Deployment with Docker http://bit.ly/1bF3CN6 
Continuous Integration 
and Deployment 
Next Generation Continuous Integration & Deployment with dotCloud’s 
Docker and Strider 
http://bit.ly/ZwTfoy 
Testing Salt States Rapidly With Docker http://bit.ly/1eFBtcm 
Lightweight Desktop 
Virtualization 
Docker Desktop: Your Desktop Over SSH Running Inside Of A Docker 
Container 
http://bit.ly/14RYL6x
How to build an image? 
Two ways to create an image: 
• You work in a container, then commit it for exploratory work 
• You build a new image from a Dockerfile for automated, 
repeatable process
1 container ?= (1process|1task|other) ? 
Best practices appear 
• Do not force you to 1 process per container 
• Ideal case: 1 ‘task’ per container, with separation of 
concerns. 
• The task might require 1 single process 
• Or 0 (for data-only containers) 
• Or several (ex: nginx+php-fpm, monitoring, …)
Containers are isolated… 
then how to make them talk to each other? 
• Private network between containers 
• Linking to make them easy to talk to a friend container 
• Expose ports 
• Mount volumes (rw or ro) 
• Advanced/not so trivial other solutions 
–Service discovery 
–Enter into the container’s namespace
How to handle data persistence 
• Data only containers, sharing data volumes 
• Mounting this data volumes in the running containers
How to handle data persistence 
How data volume works
How to handle data persistence 
How data volume works
Demo time! 
• Quick look at the Docker commands 
• Isolation demo 
• Multi containers demo: installing and launching Go Math! 
Academy in seconds. 
• Running unit tests in a container
Warning 
•Docker is great 
–It reduces dependencies, provides isolated and 
controlled context 
•But it brings new tools, and new technologies, hence 
a potential complexity increase 
–libswarm, systemd, etcd, ambassadord, fleet, etc
Some references 
• Start by the online tutorial and documentation, they are 
great! 
• Here’s some links kept while learning… but so much 
available! 
–Eight Docker Development Patterns 
–Panamax and Docker and Some Best Practices 
–Tutum blog 
–The 5 Most Important Things I’ve Learned From Using 
Docker 
–Understanding Docker Volumes 
–Docker's Youtube videos
More references 
First steps 
• dotScale 2013 - Solomon Hykes - Why we built Docker (video) 
• Twitter University – Solomon Hykes – Introduction to Docker (video) 
Going further 
• Docker layers cost (blog), on how to optimize your images layer size. 
• Twitter University - Docker at Spotify (video) 
• Top 10 open-source Docker developer tools (blog, incomplete but gives ideas) 
• Docker In-depth: Volumes (blog) 
Food for thought / Stimulate your imagination 
• AWS re:Invent 2014 - Lightning fast deploys with Docker containers and AWS (video, 
slides) 
• FutureStack14 - Docker and the Future of Modern Software (New Relic blog, video) 
• AWS re:Invent 2014 - Infrastructure as Code (video, more related to Cloudformation 
than to Docker but very inspiring if you consider the two technologies) 
• Alternative? Rocket by CoreOS… started a debate (like Joyent answer)
Tools for dev, day-to-day 
• For everyone 
• On Mac 
– Kitematic UI to manage your images/containers 
• On Windows 
– Try the new XShell5 beta to easily deal with all your current containers 
• So many others… and new ones every week 
• Fig (Fast isolated environments, by Docker) repo, site 
• A Better Development Environment with Docker and Fig (blog) 
• Lots of tools to manage multi containers apps: Kubernetes, Shipyard, 
Panamax,
Thank you

Más contenido relacionado

La actualidad más candente

Developer workflow with docker
Developer workflow with dockerDeveloper workflow with docker
Developer workflow with dockerLalatendu Mohanty
 
Learn docker in 90 minutes
Learn docker in 90 minutesLearn docker in 90 minutes
Learn docker in 90 minutesLarry Cai
 
Architecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based DeploymentsArchitecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based DeploymentsBen Hall
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker IntroductionSparkbit
 
Docker introduction
Docker introductionDocker introduction
Docker introductionLayne Peng
 
Visualising Basic Concepts of Docker
Visualising Basic Concepts of Docker Visualising Basic Concepts of Docker
Visualising Basic Concepts of Docker vishnu rao
 
Docker presentation | Paris Docker Meetup
Docker presentation | Paris Docker MeetupDocker presentation | Paris Docker Meetup
Docker presentation | Paris Docker MeetupdotCloud
 
Intro to containerization
Intro to containerizationIntro to containerization
Intro to containerizationBalint Pato
 
Docker 101 @KACST Saudi HPC 2016
Docker 101  @KACST Saudi HPC 2016Docker 101  @KACST Saudi HPC 2016
Docker 101 @KACST Saudi HPC 2016Walid Shaari
 
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @GuidewireIntroduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @GuidewiredotCloud
 
Docker 101: An Introduction
Docker 101: An IntroductionDocker 101: An Introduction
Docker 101: An IntroductionPOSSCON
 
Docker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker EcosystemDocker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker EcosystemVan Phuc
 
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12dotCloud
 
Docker from A to Z, including Swarm and OCCS
Docker from A to Z, including Swarm and OCCSDocker from A to Z, including Swarm and OCCS
Docker from A to Z, including Swarm and OCCSFrank Munz
 
Ruby and Docker on Rails
Ruby and Docker on RailsRuby and Docker on Rails
Ruby and Docker on RailsMuriel Salvan
 
Docker - 15 great Tutorials
Docker - 15 great TutorialsDocker - 15 great Tutorials
Docker - 15 great TutorialsJulien Barbier
 

La actualidad más candente (20)

Developer workflow with docker
Developer workflow with dockerDeveloper workflow with docker
Developer workflow with docker
 
Learn docker in 90 minutes
Learn docker in 90 minutesLearn docker in 90 minutes
Learn docker in 90 minutes
 
Architecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based DeploymentsArchitecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based Deployments
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Visualising Basic Concepts of Docker
Visualising Basic Concepts of Docker Visualising Basic Concepts of Docker
Visualising Basic Concepts of Docker
 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
 
Docker presentation | Paris Docker Meetup
Docker presentation | Paris Docker MeetupDocker presentation | Paris Docker Meetup
Docker presentation | Paris Docker Meetup
 
Intro to containerization
Intro to containerizationIntro to containerization
Intro to containerization
 
Docker 101 @KACST Saudi HPC 2016
Docker 101  @KACST Saudi HPC 2016Docker 101  @KACST Saudi HPC 2016
Docker 101 @KACST Saudi HPC 2016
 
Docker - introduction
Docker - introductionDocker - introduction
Docker - introduction
 
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @GuidewireIntroduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
 
Docker
DockerDocker
Docker
 
Docker 101: An Introduction
Docker 101: An IntroductionDocker 101: An Introduction
Docker 101: An Introduction
 
Docker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker EcosystemDocker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker Ecosystem
 
The state of the swarm
The state of the swarmThe state of the swarm
The state of the swarm
 
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
 
Docker from A to Z, including Swarm and OCCS
Docker from A to Z, including Swarm and OCCSDocker from A to Z, including Swarm and OCCS
Docker from A to Z, including Swarm and OCCS
 
Ruby and Docker on Rails
Ruby and Docker on RailsRuby and Docker on Rails
Ruby and Docker on Rails
 
Docker - 15 great Tutorials
Docker - 15 great TutorialsDocker - 15 great Tutorials
Docker - 15 great Tutorials
 

Destacado

Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerThibaut Marmin
 
French Webinar: XL Deploy 4.0
French Webinar: XL Deploy 4.0French Webinar: XL Deploy 4.0
French Webinar: XL Deploy 4.0XebiaLabs
 
Déploiements avec Docker
Déploiements avec DockerDéploiements avec Docker
Déploiements avec DockerLuis Lopez
 
DOCKER AVEC RANCHER
DOCKER AVEC RANCHERDOCKER AVEC RANCHER
DOCKER AVEC RANCHERTREEPTIK
 
Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011Claude Falguiere
 
Symfony Live Paris 2016 - Ce que nous avons retenu
Symfony Live Paris 2016 - Ce que nous avons retenuSymfony Live Paris 2016 - Ce que nous avons retenu
Symfony Live Paris 2016 - Ce que nous avons retenuSooyoos
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfonyJeremy Gachet
 
Introduction à docker.io
Introduction à docker.ioIntroduction à docker.io
Introduction à docker.ioNicolas Hennion
 
2 Linux Container and Docker
2 Linux Container and Docker2 Linux Container and Docker
2 Linux Container and DockerFabio Fumarola
 
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Stephane Manciot
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesXavier Gorse
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?rfelden
 
Docker introduction
Docker introductionDocker introduction
Docker introductiondotCloud
 
Reglement prime adaptation logement
Reglement prime adaptation logementReglement prime adaptation logement
Reglement prime adaptation logementahup1
 
Vulcan entre légende et modernité - présentation
Vulcan  entre légende et modernité - présentationVulcan  entre légende et modernité - présentation
Vulcan entre légende et modernité - présentationMarinela
 

Destacado (20)

Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
 
Dev opsday case study
Dev opsday   case studyDev opsday   case study
Dev opsday case study
 
French Webinar: XL Deploy 4.0
French Webinar: XL Deploy 4.0French Webinar: XL Deploy 4.0
French Webinar: XL Deploy 4.0
 
Déploiements avec Docker
Déploiements avec DockerDéploiements avec Docker
Déploiements avec Docker
 
DOCKER AVEC RANCHER
DOCKER AVEC RANCHERDOCKER AVEC RANCHER
DOCKER AVEC RANCHER
 
Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011
 
Symfony Live Paris 2016 - Ce que nous avons retenu
Symfony Live Paris 2016 - Ce que nous avons retenuSymfony Live Paris 2016 - Ce que nous avons retenu
Symfony Live Paris 2016 - Ce que nous avons retenu
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfony
 
Symfony Best Practices
Symfony Best PracticesSymfony Best Practices
Symfony Best Practices
 
Introduction à docker.io
Introduction à docker.ioIntroduction à docker.io
Introduction à docker.io
 
De Devoxx au CAC40
De Devoxx au CAC40De Devoxx au CAC40
De Devoxx au CAC40
 
2 Linux Container and Docker
2 Linux Container and Docker2 Linux Container and Docker
2 Linux Container and Docker
 
Présentation Docker
Présentation DockerPrésentation Docker
Présentation Docker
 
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notes
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
BackDay Xebia : Microservices en démo
BackDay Xebia : Microservices en démoBackDay Xebia : Microservices en démo
BackDay Xebia : Microservices en démo
 
Reglement prime adaptation logement
Reglement prime adaptation logementReglement prime adaptation logement
Reglement prime adaptation logement
 
Vulcan entre légende et modernité - présentation
Vulcan  entre légende et modernité - présentationVulcan  entre légende et modernité - présentation
Vulcan entre légende et modernité - présentation
 

Similar a The challenge of application distribution - Introduction to Docker (2014 dec 03)

Intro Docker october 2013
Intro Docker october 2013Intro Docker october 2013
Intro Docker october 2013dotCloud
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to DockerAditya Konarde
 
Intro to Docker November 2013
Intro to Docker November 2013Intro to Docker November 2013
Intro to Docker November 2013Docker, Inc.
 
Dockers and kubernetes
Dockers and kubernetesDockers and kubernetes
Dockers and kubernetesDr Ganesh Iyer
 
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013dotCloud
 
Demystifying Containerization Principles for Data Scientists
Demystifying Containerization Principles for Data ScientistsDemystifying Containerization Principles for Data Scientists
Demystifying Containerization Principles for Data ScientistsDr Ganesh Iyer
 
Docker and OpenStack Boston Meetup
Docker and OpenStack Boston MeetupDocker and OpenStack Boston Meetup
Docker and OpenStack Boston MeetupKamesh Pemmaraju
 
Docker open stack boston
Docker open stack bostonDocker open stack boston
Docker open stack bostondotCloud
 
Are VM Passé?
Are VM Passé? Are VM Passé?
Are VM Passé? dotCloud
 
Getting Started with Docker - Nick Stinemates
Getting Started with Docker - Nick StinematesGetting Started with Docker - Nick Stinemates
Getting Started with Docker - Nick StinematesAtlassian
 
Application Deployment on Openstack
Application Deployment on OpenstackApplication Deployment on Openstack
Application Deployment on OpenstackDocker, Inc.
 
Intro to Docker October 2013
Intro to Docker October 2013Intro to Docker October 2013
Intro to Docker October 2013Docker, Inc.
 
Docker - Portable Deployment
Docker - Portable DeploymentDocker - Portable Deployment
Docker - Portable Deploymentjavaonfly
 
Docker intro
Docker introDocker intro
Docker introspiddy
 

Similar a The challenge of application distribution - Introduction to Docker (2014 dec 03) (20)

Intro Docker october 2013
Intro Docker october 2013Intro Docker october 2013
Intro Docker october 2013
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Intro to Docker November 2013
Intro to Docker November 2013Intro to Docker November 2013
Intro to Docker November 2013
 
Dockers and kubernetes
Dockers and kubernetesDockers and kubernetes
Dockers and kubernetes
 
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
 
Demystifying Containerization Principles for Data Scientists
Demystifying Containerization Principles for Data ScientistsDemystifying Containerization Principles for Data Scientists
Demystifying Containerization Principles for Data Scientists
 
Docker and OpenStack Boston Meetup
Docker and OpenStack Boston MeetupDocker and OpenStack Boston Meetup
Docker and OpenStack Boston Meetup
 
Webinar Docker Tri Series
Webinar Docker Tri SeriesWebinar Docker Tri Series
Webinar Docker Tri Series
 
OpenStack Summit
OpenStack SummitOpenStack Summit
OpenStack Summit
 
Docker-Intro
Docker-IntroDocker-Intro
Docker-Intro
 
Docker open stack boston
Docker open stack bostonDocker open stack boston
Docker open stack boston
 
OpenStack Boston
OpenStack BostonOpenStack Boston
OpenStack Boston
 
Docker intro
Docker introDocker intro
Docker intro
 
Are VMs Passé?
Are VMs Passé?Are VMs Passé?
Are VMs Passé?
 
Are VM Passé?
Are VM Passé? Are VM Passé?
Are VM Passé?
 
Getting Started with Docker - Nick Stinemates
Getting Started with Docker - Nick StinematesGetting Started with Docker - Nick Stinemates
Getting Started with Docker - Nick Stinemates
 
Application Deployment on Openstack
Application Deployment on OpenstackApplication Deployment on Openstack
Application Deployment on Openstack
 
Intro to Docker October 2013
Intro to Docker October 2013Intro to Docker October 2013
Intro to Docker October 2013
 
Docker - Portable Deployment
Docker - Portable DeploymentDocker - Portable Deployment
Docker - Portable Deployment
 
Docker intro
Docker introDocker intro
Docker intro
 

Último

Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 

Último (20)

Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 

The challenge of application distribution - Introduction to Docker (2014 dec 03)

  • 1. The challenge of application distribution Introduction to Docker
  • 2. Credits & references Intros slides borrowed from • dotCloud’s « Docker introduction » slideshow • AWS re:Invent 2014 session APP303, « Lighting Fast Deploys with Docker Containers and AWS »
  • 3. Agenda • The application distribution challenge • The current solutions • Introduction to Docker, Containers, and the Matrix from Hell • Why people care: Separation of Concerns • Technical Discussion • Ecosystem, momentum • How to build Docker images • How to make containers talk to each other, how to handle data persistence • Demo 1: isolation • Demo 2: real case - installing Go Math!, tail –f containers, unit tests
  • 5. The challenge: apps have fundamentally changed ~2000 2014 Long lived Development is iterative and constant Monolithic and built on a single stack Built from loosely coupled components Deployed to a single server Deployed to a multitude of servers
  • 7. The challenge: apps have fundamentally changed Static website User DB Redis + redis-sentinel Web frontend Queue Analytics DB Background workers API endpoint nginx 1.5 + modsecurity + openssl + bootstrap 2 postgresql + pgv8 + v8 hadoop + hive + thrift + OpenJDK Ruby + Rails + sass + Unicorn Python 3.0 + celery + pyredis + libcurl + ffmpeg + libopencv + nodejs + phantomjs Python 2.7 + Flask + pyredis + celery + psycopg + postgresql-client Development VM QA server Public Cloud Disaster recovery Contributor’s laptop Production Servers Multiplicity of Stacks Multiplicity of hardware environments Production Cluster Customer Data Center Do services and apps interact appropriately? Can I migrate smoothly and quickly?
  • 8. The Matrix From Hell Static website Web frontend Background workers User DB Analytics DB Queue ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Dev VM QA Server Single Prod Server Onsite Cluster Public Cloud Contributor’s laptop Customer Servers
  • 10. Current solutions • ‘Configuration’ tools like Ansible, Chef, Puppet, … • VM tools : Vagrant • Container tools: Google’s LMCTFY
  • 11. Goods Multiplicity of transporting/storing Multipilicity of methods for Do I worry about how goods interact (e.g. coffee beans next to spices) Can I transport quickly and smoothly (e.g. from boat to train to truck) Cargo Transport Pre-1960
  • 12. Also a matrix from hell ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
  • 13. Multiplicity of Goods Multiplicity of methods for transporting/storin g Do I worry about how goods interact (e.g. coffee beans next to spices) Can I transport quickly and smoothly (e.g. from boat to train to truck) Solution: Intermodal Shipping Container …in between, can be loaded and unloaded, stacked, transported efficiently over long distances, and transferred from one mode of transport to another A standard container that is loaded with virtually any goods, and stays sealed until it reaches final delivery.
  • 15. Static website User DB Web frontend Queue Analytics DB Dev VM QA server Public Cloud Contributor’s laptop Docker is a shipping container system for code Multiplicity of Stacks Multiplicity of hardware environments Production Cluster Customer Data Center Do services and apps interact appropriately? Can I migrate smoothly and quickly …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…
  • 16. Static website Web frontend Background workers User DB Analytics DB Queue Dev VM QA Server Single Prod Server Onsite Cluster Public Cloud Contributor’s laptop Customer Servers Docker eliminates the matrix from Hell
  • 17. Good for developers • 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 * Anywhere = any x86 server running a modern Linux kernel (3.2+ generally. 2.6.32+ for RHEL 6.5+, Fedora, & related)
  • 18. Good for (Dev)Ops • 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
  • 19. 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
  • 20. Under the hood • To learn more about how it works, some background: –Linux namespaces • PID • IPTables • UTS (~hostname) • Mount • IPC (inter-process) –CGroups –LXC Containers
  • 21. Containers vs. VMs App A Bins / Libs Bins / Libs Bins / Libs Hypervisor (Type 2) Host OS Server Guest OS App A’ Gues t OS App B Gues t OS App A’ Docker Host OS Server App A Bins/Libs Bins/Libs App B App B’ App B’ App B’ 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
  • 22. Why are Docker containers lightweight? VMs Containers App A Bins / Libs Original App (No OS to take up space, resources, or require restart) App Δ Bins / App A Bins / Libs App A’ Bins / Libs Gues t OS Modified App Copy on write capabilities allow us to only save the diffs between container A and container A’ VMs App A Bins / Libs Guest OS Every app, every copy of an app, and every slight modification of the app requires a new virtual server App A Copy of App No OS. Can Share bins/libs Guest OS Guest OS
  • 24. Terminology Docker concept OOP analogy Dockerfile Source code Image Class Container Instance
  • 25. What are the basics of the Docker system? Dockerfile For A Source Code Repositor y Docker Engine Docker Container Image Registry Build Docker Host 2 OS (Linux) Container A Container B Container C Container A Push Search Pull Run Host 1 OS (Linux)
  • 26. Changes and Updates App A’’ Bins / Libs Docker Engine Docker Container Image Registry Push Update Docker Engine App A Bins / Libs App Δ Bins / Base Container Image Host is now running A’’ Container Mod A’’ App Δ Bins / App A Bins / Libs Bins / Host running A wants to upgrade to A’’. Requests update. Gets only diffs Container Mod A’
  • 27. A new open source project… or the next big thing? • Compatible with Jenkins, Travis, Chef, Puppet, Vagrant and OpenStack… • Ecosystem: lots of tools, even by serious contributors (Google – Kubernetes, cAdvisor - NetFlix …), new IAAS provider emerge (like Tutum), • Supported by Amazon, Google, Microsoft, Rackspace, Digital Ocean, Joyent, RedHat, … • Momentum... See pull requests numbers and frequency to get an idea • Used in production… even by big players (HP, Ebay, New Relic, Etsy, Yelp, Spotify, …)
  • 28. Ecosystem Support • Operating systems – Virtually any distribution with a 2.6.32+ kernel – Red Hat/Docker collaboration to make work across RHEL 6.4+, Fedora, and other members of the family (2.6.32 +) – CoreOS—Small core OS purpose built with Docker • OpenStack – Docker integration into NOVA (& compatibility with Glance, Horizon, etc.) accepted for Havana release • Private PaaS – OpenShift – Solum (Rackspace, OpenStack) – Other TBA • Public PaaS – Deis, Voxoz, Cocaine (Yandex), Baidu PaaS • Public IaaS – Native support in Rackspace, Digital Ocean,+++ – AMI (or equivalent) available for AWS & other • DevOps Tools – Integrations with Chef, Puppet, Jenkins, Travis, Salt, Ansible +++ • Orchestration tools – Mesos, Heat, ++ – Shipyard & others purpose built for Docker • Applications – 1000’s of Dockerized applications available at index.docker.io
  • 29. Use Cases • Ted Dziuba on the Use of Docker for Continuous Integration at Ebay Now – https://speakerdeck.com/teddziuba/docker-at-ebay – http://www.youtube.com/watch?feature=player_embedded&v=0Hi0W4gX--4 • Sasha Klizhentas on use of Docker at Mailgun/Rackspace • http://www.youtube.com/watch?feature=player_embedded&v=CMC3xdAo9RI • Sebastien Pahl on use of Docker at CloudFlare • http://www.youtube.com/watch?feature=player_embedded&v=-Lj3jt_-3r0 • Cambridge HealthCare • http://blog.howareyou.com/post/62157486858/continuous-delivery-with-docker-and- jenkins-part-i • Red Hat Openshift and Docker • https://www.openshift.com/blogs/technical-thoughts-on-openshift-and-docker
  • 30. Use Cases—From the Community Use Case Examples Link Clusters Building a MongoDB cluster using docker http://bit.ly/1acbjZf Production Quality MongoDB Setup with Docker http://bit.ly/15CaiHb Wildfly cluster using Docker on Fedora http://bit.ly/1bClX0O Build your own PaaS OpenSource PaaS built on Docker, Chef, and Heroku Buildpacks http://deis.io Web Based JiffyLab – web based environment for the instruction, or lightweight use of, Environment for Python and UNIX shell Instruction http://bit.ly/12oaj2K Easy Application Deployment Deploy Java Apps With Docker = Awesome http://bit.ly/11BCvvu How to put your development environment on docker http://bit.ly/1b4XtJ3 Running Drupal on Docker http://bit.ly/15MJS6B Installing Redis on Docker http://bit.ly/16EWOKh Create Secure Sandboxes Docker makes creating secure sandboxes easier than ever http://bit.ly/13mZGJH Create your own SaaS Memcached as a Service http://bit.ly/11nL8vh Automated Application Deployment Multi-cloud Deployment with Docker http://bit.ly/1bF3CN6 Continuous Integration and Deployment Next Generation Continuous Integration & Deployment with dotCloud’s Docker and Strider http://bit.ly/ZwTfoy Testing Salt States Rapidly With Docker http://bit.ly/1eFBtcm Lightweight Desktop Virtualization Docker Desktop: Your Desktop Over SSH Running Inside Of A Docker Container http://bit.ly/14RYL6x
  • 31. How to build an image? Two ways to create an image: • You work in a container, then commit it for exploratory work • You build a new image from a Dockerfile for automated, repeatable process
  • 32. 1 container ?= (1process|1task|other) ? Best practices appear • Do not force you to 1 process per container • Ideal case: 1 ‘task’ per container, with separation of concerns. • The task might require 1 single process • Or 0 (for data-only containers) • Or several (ex: nginx+php-fpm, monitoring, …)
  • 33. Containers are isolated… then how to make them talk to each other? • Private network between containers • Linking to make them easy to talk to a friend container • Expose ports • Mount volumes (rw or ro) • Advanced/not so trivial other solutions –Service discovery –Enter into the container’s namespace
  • 34. How to handle data persistence • Data only containers, sharing data volumes • Mounting this data volumes in the running containers
  • 35. How to handle data persistence How data volume works
  • 36. How to handle data persistence How data volume works
  • 37. Demo time! • Quick look at the Docker commands • Isolation demo • Multi containers demo: installing and launching Go Math! Academy in seconds. • Running unit tests in a container
  • 38.
  • 39. Warning •Docker is great –It reduces dependencies, provides isolated and controlled context •But it brings new tools, and new technologies, hence a potential complexity increase –libswarm, systemd, etcd, ambassadord, fleet, etc
  • 40. Some references • Start by the online tutorial and documentation, they are great! • Here’s some links kept while learning… but so much available! –Eight Docker Development Patterns –Panamax and Docker and Some Best Practices –Tutum blog –The 5 Most Important Things I’ve Learned From Using Docker –Understanding Docker Volumes –Docker's Youtube videos
  • 41. More references First steps • dotScale 2013 - Solomon Hykes - Why we built Docker (video) • Twitter University – Solomon Hykes – Introduction to Docker (video) Going further • Docker layers cost (blog), on how to optimize your images layer size. • Twitter University - Docker at Spotify (video) • Top 10 open-source Docker developer tools (blog, incomplete but gives ideas) • Docker In-depth: Volumes (blog) Food for thought / Stimulate your imagination • AWS re:Invent 2014 - Lightning fast deploys with Docker containers and AWS (video, slides) • FutureStack14 - Docker and the Future of Modern Software (New Relic blog, video) • AWS re:Invent 2014 - Infrastructure as Code (video, more related to Cloudformation than to Docker but very inspiring if you consider the two technologies) • Alternative? Rocket by CoreOS… started a debate (like Joyent answer)
  • 42. Tools for dev, day-to-day • For everyone • On Mac – Kitematic UI to manage your images/containers • On Windows – Try the new XShell5 beta to easily deal with all your current containers • So many others… and new ones every week • Fig (Fast isolated environments, by Docker) repo, site • A Better Development Environment with Docker and Fig (blog) • Lots of tools to manage multi containers apps: Kubernetes, Shipyard, Panamax,

Notas del editor

  1. Placeholder for demos, has I always click next! Switch to shell now