SlideShare a Scribd company logo
1 of 47
Download to read offline
Containers
from development to production
Jérôme Petazzoni
@jpetazzo
Docker Inc.
@docker
Who am I?
● Jérôme Petazzoni (@jpetazzo)
● Joined Docker (dotCloud) more than 4 years ago
(I was at Docker before it was cool!)
● I have built and scaled the dotCloud PaaS
● I learned a few things about running containers
(in production)
Outline
● Intro / pop quizz about Docker and containers
● VMs and containers: technical differences
● VMs and containers: functional differences
● Our goal: lean containers
● Composing stacks of containers
Recap
about Docker
and containers
Build, ship and run
any app, anywhere
Take any Linux program, and put it in a container
● Web apps and services, workers
(Go, Java, Node, PHP, Python, Ruby…)
● Data stores: SQL, NoSQL, big data
(Cassandra, ElasticSearch, Hadoop, Mongo, MySQL, PostgreSQL, Redis...)
● Other server-y things
(Consul, Etcd, Mesos, RabbitMQ, Zookeeper...)
● Command-line tools
(AWS CLI, Ffmpeg...)
● Desktop apps
(Chrome, LibreOffice, Skype, Steam…)
What about non-Linux programs?
● Desktop apps with Wine
– e.g.: Spotify client
● Coming soon: Docker for Windows
– run Windows app on Windows machines
● Coming soon: Docker for FreeBSD
– port in progress
● Coming eventually: Docker for OS X
– technically possible; but is this useful?
Ship that container easily and efficiently
● Docker comes with an image distribution protocol
● Distribution server can be hosted by Docker Inc.
– free for public images
● Distribution protocol is public
● Open source reference implementation
– used by Docker Inc. for the public registry
● Container images are broken down into layers
● When updating and distributing an image,
only ship relevant layers
Run those containers anywhere
● Containers can run in VMs or in physical machines
● Docker is available on all modern Linux variants
● Many IAAS providers have server images with Docker
● On OS X and Windows dev machines: boot2docker
● There are distros dedicated to run Docker containers
– Atomic, CoreOS, RancherOS, Snappy Core...
● Other Docker implementations exist (e.g. Joyent Triton)
● Docker-as-a-Service providers are blooming
VMs and containers:
technical differences
Portability
● Containers can run on top of public cloud
– run the same container image everywhere
● Nested hypervisors (VMs in VMs) exist, but still rare
● Containers are easy to move
– thanks to layers, distribution protocol, registry...
● VM images have to be converted and transferred
– both are slow operations
Format & environment
● VM
– executes machine code
– environment = something that looks like a computer
● JVM
– executes JVM bytecode
– environment = Java APIs
● Container
– executes machine code
– environment = Linux kernel system calls interface
Containers have low overhead
● Normal* process(es) running on top of normal kernel
● No device emulation (no extra code path involved in I/O)
● Context switch between containers
= context switch between processes
● Benchmarks show no difference at all
between containers and bare metal
(after adequate tuning and options have been selected)
● Containers have higher density
*There are extra "labels" denoting membership to given
namespaces and control groups. Similar to regular UID.
VMs have stronger isolation
● Inter-VM communication must happen over the network
– Some hypervisors have custom paths, but non-standard
● VMs can run as non-privileged processes on the host
– Breaking out of a VM will have ~zero security impact
● Containers run on top of a single kernel
– Kernel vulnerability can lead to full scale compromise
● Containers can share files, sockets, FIFOs, memory areas…
– They can communicate with standard UNIX mechanisms
Analogy: brick walls vs. room dividers
● Brick walls
– sturdy
– slow to build
– messy to move
● Room dividers
– fragile
– deployed in seconds
– moved easily
Blurring lines
● Intel Clear Containers; Clever Cloud
– stripped down VMs, boot super fast, tiny footprint
● Joyent Triton
– Solaris "branded zones," running Linux binaries securely,
exposing the Docker API
● Ongoing efforts to harden containers
– GRSEC, SELinux, AppArmor
VMs and containers:
functional differences
Inside
● VMs need a full OS and associated tools
(Backups, logging, periodic job execution, remote access...)
● Containers can go both ways:
– machine container
(runs init, cron, ssh, syslog ... and the app)
– application container
(runs the app and nothing else;
relies on external mechanisms)
VM lifecycle
● Option 1: long lifecycle
(provisioning→update→update→…→update→disposal)
– easily leads to configuration drift
(subtle differences that add up over time)
– requires tight configuration management
● Option 2: golden images
(phoenix servers, immutable infrastructure ...)
– create new image for each modification
– deploy by replacing old servers with new servers
– nice and clean, but heavy and complex to setup
Container lifecycle
● Containers are created from an image
● Image creation is easy
● Image upgrade is fast
● Immutable infrastructure is easy to implement
Why?
Because container snapshots are extremely fast and cheap.
Development process (VMs)
● Best practice in production = 1 VM per component
● Not realistic to have 1 VM per component in dev
● Also: prod has additional/different components
(e.g.: logging, monitoring, service discovery...)
● Result: very different environment for dev & prod
Development process (containers)
● Run tons of containers on dev machines
● Build the same container for dev & prod
● How do we provide container variants?
Bloated containers
● Containers have all the software required for production
● In dev mode, only essential processes are started
● In prod mode, additional processes run as well
● Problems:
– bigger containers
– behavior can differ (because of extra processes)
– extra processes duplicated between containers
– hard to test those extra processes in isolation
Lean containers
Principle
● "Do one thing, do it well"
● One container for the component itself
● One container for logging
● One container for monitoring
● One container for backups
● One container for debugging (when needed)
● etc.
Implementation (general principles)
● Containers can share almost anything, selectively
– files
(logs, data at rest, audit)
– network stack
(traffic routing and analysis, monitoring)
– process space, memory
(process tracing and debugging)
Let's dive into the details
Logging (option 1: Docker logging drivers)
● Containers write to standard output
● Docker has different logging drivers:
– writes to local JSON files by default
– can send to syslog
Imperfect solution for now, but will be improved.
Preferred in the long run.
Logging (option 2: shared log directory)
● Containers write regular files to a directory
● That directory is shared with another container
docker run -d --name myapp1 -v /var/log myapp:v1.0
● In development setup:
docker run --volumes-from myapp1 ubuntu 
sh -c 'tail -F /var/log/*'
● In production:
docker run -d --volumes-from myapp1 logcollector
Logging takeaways
● Application can be "dumb" about logging
● Log collection and shipping happens in Docker,
or in separate(s) container(s)
● Run custom log analyzer without changing app container
(e.g. apachetop)
● Migrate logging system without changing app container
"Yes, but..."
● "What about performance overhead?"
– no performance overhead
– both containers access files directly
(just like processes running on the same machine)
● "What about synchronization issues?"
– same as previous answer!
Backups (file-based)
● Store mutable data on Docker volumes
(same mechanism as for logs)
● Share volumes with special-purpose backup containers
● Put backup tools in the backup container
(boto, rsync, s3cmd, unison...)
docker run --volumes-from mydb1 ubuntu 
rsync -av /var/lib/ 
backup@remotehost:mydb1/
● The whole setup doesn't touch the app (or DB) container
Backups (network-based)
● Run the backup job (`pg_dump`, `mysqldump`, etc.)
from a separate container
● Advantages (vs. running in the same container):
– nothing to install in the app (or DB) container
– if the backup job runs amok, it remains contained (!)
– another team can maintain backup jobs
(and be responsible for them)
Network analysis
● Packet capture (`tcpdump`, `ngrep`, `ntop`, etc.)
● Low-level metrics (`netstat`, `ss`, etc.)
● Install required tools in a separate container image
● Run a container in the same *network namespace*
docker run -d --name web1 nginx
docker run -ti --net container:web1 tcpdump -pni eth0
docker run -ti --net container:web1 ubuntu ss -n --tcp
Service discovery
● Docker can do linking and generic DNS injection
● Your code connects to e.g. redis
(pretending that redis resolves to something)
● Docker adds a DNS alias* so that redis resolves
to the right container, or to some external service
● In dev, Docker Compose manages service dependencies
● In prod, you abstract service discovery from the container
*Really, an entry in the container's /etc/hosts
Service discovery in practice
● When service A needs to talk to service B...
1. Start container B on a Docker host
2. Retrieve host+port allocated for B
3. Start ambassador (relaying to this host+port)
4. Start container A linked to ambassador
5. Profit!
General pattern
● Your code runs in the same container in dev and prod
● Add "sidekick*" containers for additional tasks
● Developers don't have to be bothered about ops
● Ops can do their job without messing with devs' code
*Kubernetes sometimes calls them "sidecars."
Composing stacks of containers
Docker Compose
docker-compose.yml
rng:
build: rng
redis:
image: redis
webui:
build: webui
links:
- redis
ports:
- "80:80"
hasher:
build: hasher
worker:
build: worker
links:
- rng
- hasher
- redis
Docker Compose
● Start whole stack with `docker-compose up`
● Start individual containers (and their dependencies)
with `docker-compose up xyz`
● Takes care of container lifecycle
(creation, update, data persistence, scaling up/down...)
● Doesn't automatically solve networking and discovery (yet)
... However ...
docker-compose.yml, reloaded
hasher:
build: hasher
worker:
build: worker
links:
- rng
- hasherproxy:hasher
- redis
hasherproxy:
image: jpetazzo/hamba
links:
- hasher
command: 80 hasher 80
(This was automatically generated by a tiny Python script.)
Heads up!
● Docker networking is evolving quickly
● Docker 1.7 (released last week) supports internally:
– "networks" as first class objects
– multiple networks
– overlay driver allowing to span networks across multiple hosts
– networking plugins from ecosystem partners
● Those features will gradually be exposed over API/CLI
● Check the DockerCon demos!
Conclusions
● Containers can share more context than VMs
● We can use this to decouple complexity
(think "microservices" but for ops/devs separation)
● All tasks typically requiring VM access
can be done in separate containers
● As a result, deployments are broken down
in smaller, simpler pieces
● Complex stacks are expressed with simple YAML files
● Docker isn't a "silver bullet" to solve all problems,
but it gives us tools that make our jobs easier
Thanks!
Questions?
@jpetazzo
@docker

More Related Content

What's hot

Docker: automation for the rest of us
Docker: automation for the rest of usDocker: automation for the rest of us
Docker: automation for the rest of usJérôme Petazzoni
 
Docker introduction
Docker introductionDocker introduction
Docker introductionLayne Peng
 
Deploy microservices in containers with Docker and friends - KCDC2015
Deploy microservices in containers with Docker and friends - KCDC2015Deploy microservices in containers with Docker and friends - KCDC2015
Deploy microservices in containers with Docker and friends - KCDC2015Jérôme Petazzoni
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned RightScale
 
Shipping Applications to Production in Containers with Docker
Shipping Applications to Production in Containers with DockerShipping Applications to Production in Containers with Docker
Shipping Applications to Production in Containers with DockerJérôme Petazzoni
 
Introduction to Docker and deployment and Azure
Introduction to Docker and deployment and AzureIntroduction to Docker and deployment and Azure
Introduction to Docker and deployment and AzureJérôme Petazzoni
 
Visualising Basic Concepts of Docker
Visualising Basic Concepts of Docker Visualising Basic Concepts of Docker
Visualising Basic Concepts of Docker vishnu rao
 
Intro to containerization
Intro to containerizationIntro to containerization
Intro to containerizationBalint Pato
 
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
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...Jérôme Petazzoni
 
Orchestrating Docker containers at scale
Orchestrating Docker containers at scaleOrchestrating Docker containers at scale
Orchestrating Docker containers at scaleMaciej Lasyk
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to DockerAlan Forbes
 
Docker Introduction + what is new in 0.9
Docker Introduction + what is new in 0.9 Docker Introduction + what is new in 0.9
Docker Introduction + what is new in 0.9 Jérôme Petazzoni
 
Orchestration for the rest of us
Orchestration for the rest of usOrchestration for the rest of us
Orchestration for the rest of usJérôme Petazzoni
 
Docker - The Linux Container
Docker - The Linux ContainerDocker - The Linux Container
Docker - The Linux ContainerBalaji Rajan
 
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 Introductory workshop
Docker Introductory workshopDocker Introductory workshop
Docker Introductory workshopRuncy Oommen
 

What's hot (20)

Docker: automation for the rest of us
Docker: automation for the rest of usDocker: automation for the rest of us
Docker: automation for the rest of us
 
JOSA TechTalk: Introduction to docker
JOSA TechTalk: Introduction to dockerJOSA TechTalk: Introduction to docker
JOSA TechTalk: Introduction to docker
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Deploy microservices in containers with Docker and friends - KCDC2015
Deploy microservices in containers with Docker and friends - KCDC2015Deploy microservices in containers with Docker and friends - KCDC2015
Deploy microservices in containers with Docker and friends - KCDC2015
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned
 
Shipping Applications to Production in Containers with Docker
Shipping Applications to Production in Containers with DockerShipping Applications to Production in Containers with Docker
Shipping Applications to Production in Containers with Docker
 
Introduction to Docker and deployment and Azure
Introduction to Docker and deployment and AzureIntroduction to Docker and deployment and Azure
Introduction to Docker and deployment and Azure
 
Visualising Basic Concepts of Docker
Visualising Basic Concepts of Docker Visualising Basic Concepts of Docker
Visualising Basic Concepts of Docker
 
Intro to containerization
Intro to containerizationIntro to containerization
Intro to containerization
 
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
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...
 
Orchestrating Docker containers at scale
Orchestrating Docker containers at scaleOrchestrating Docker containers at scale
Orchestrating Docker containers at scale
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Docker Introduction + what is new in 0.9
Docker Introduction + what is new in 0.9 Docker Introduction + what is new in 0.9
Docker Introduction + what is new in 0.9
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Orchestration for the rest of us
Orchestration for the rest of usOrchestration for the rest of us
Orchestration for the rest of us
 
Docker - The Linux Container
Docker - The Linux ContainerDocker - The Linux Container
Docker - The Linux Container
 
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 - introduction
Docker - introductionDocker - introduction
Docker - introduction
 
Docker Introductory workshop
Docker Introductory workshopDocker Introductory workshop
Docker Introductory workshop
 

Viewers also liked

How to contribute to large open source projects like Docker (LinuxCon 2015)
How to contribute to large open source projects like Docker (LinuxCon 2015)How to contribute to large open source projects like Docker (LinuxCon 2015)
How to contribute to large open source projects like Docker (LinuxCon 2015)Jérôme Petazzoni
 
Docker Non Technical Presentation
Docker Non Technical PresentationDocker Non Technical Presentation
Docker Non Technical PresentationJérôme Petazzoni
 
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...Jérôme Petazzoni
 
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxConAnatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxConJérôme Petazzoni
 
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...Jérôme Petazzoni
 
Containers, docker, and security: state of the union (Bay Area Infracoders Me...
Containers, docker, and security: state of the union (Bay Area Infracoders Me...Containers, docker, and security: state of the union (Bay Area Infracoders Me...
Containers, docker, and security: state of the union (Bay Area Infracoders Me...Jérôme Petazzoni
 
The Docker ecosystem and the future of application deployment
The Docker ecosystem and the future of application deploymentThe Docker ecosystem and the future of application deployment
The Docker ecosystem and the future of application deploymentJérôme Petazzoni
 
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...Jérôme Petazzoni
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Jérôme Petazzoni
 
A Picture Costs A Thousand Words
A Picture Costs A Thousand WordsA Picture Costs A Thousand Words
A Picture Costs A Thousand WordsGuy Podjarny
 
6 Million Ways To Log In Docker - NYC Docker Meetup 12/17/2014
6 Million Ways To Log In Docker - NYC Docker Meetup 12/17/20146 Million Ways To Log In Docker - NYC Docker Meetup 12/17/2014
6 Million Ways To Log In Docker - NYC Docker Meetup 12/17/2014Christian Beedgen
 
Containers - Transforming the data centre as we know it 2016
Containers - Transforming the data centre as we know it 2016Containers - Transforming the data centre as we know it 2016
Containers - Transforming the data centre as we know it 2016Keith Lynch
 
Impact of big data on analytics
Impact of big data on analyticsImpact of big data on analytics
Impact of big data on analyticsCapgemini
 
Containers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific TrioContainers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific TrioJérôme Petazzoni
 
Apache Kylin: OLAP Engine on Hadoop - Tech Deep Dive
Apache Kylin: OLAP Engine on Hadoop - Tech Deep DiveApache Kylin: OLAP Engine on Hadoop - Tech Deep Dive
Apache Kylin: OLAP Engine on Hadoop - Tech Deep DiveXu Jiang
 
Docker Online Meetup: Announcing Docker CE + EE
Docker Online Meetup: Announcing Docker CE + EEDocker Online Meetup: Announcing Docker CE + EE
Docker Online Meetup: Announcing Docker CE + EEDocker, Inc.
 
3Com 07-0294-000
3Com 07-0294-0003Com 07-0294-000
3Com 07-0294-000savomir
 

Viewers also liked (17)

How to contribute to large open source projects like Docker (LinuxCon 2015)
How to contribute to large open source projects like Docker (LinuxCon 2015)How to contribute to large open source projects like Docker (LinuxCon 2015)
How to contribute to large open source projects like Docker (LinuxCon 2015)
 
Docker Non Technical Presentation
Docker Non Technical PresentationDocker Non Technical Presentation
Docker Non Technical Presentation
 
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
 
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxConAnatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
 
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
 
Containers, docker, and security: state of the union (Bay Area Infracoders Me...
Containers, docker, and security: state of the union (Bay Area Infracoders Me...Containers, docker, and security: state of the union (Bay Area Infracoders Me...
Containers, docker, and security: state of the union (Bay Area Infracoders Me...
 
The Docker ecosystem and the future of application deployment
The Docker ecosystem and the future of application deploymentThe Docker ecosystem and the future of application deployment
The Docker ecosystem and the future of application deployment
 
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
 
A Picture Costs A Thousand Words
A Picture Costs A Thousand WordsA Picture Costs A Thousand Words
A Picture Costs A Thousand Words
 
6 Million Ways To Log In Docker - NYC Docker Meetup 12/17/2014
6 Million Ways To Log In Docker - NYC Docker Meetup 12/17/20146 Million Ways To Log In Docker - NYC Docker Meetup 12/17/2014
6 Million Ways To Log In Docker - NYC Docker Meetup 12/17/2014
 
Containers - Transforming the data centre as we know it 2016
Containers - Transforming the data centre as we know it 2016Containers - Transforming the data centre as we know it 2016
Containers - Transforming the data centre as we know it 2016
 
Impact of big data on analytics
Impact of big data on analyticsImpact of big data on analytics
Impact of big data on analytics
 
Containers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific TrioContainers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific Trio
 
Apache Kylin: OLAP Engine on Hadoop - Tech Deep Dive
Apache Kylin: OLAP Engine on Hadoop - Tech Deep DiveApache Kylin: OLAP Engine on Hadoop - Tech Deep Dive
Apache Kylin: OLAP Engine on Hadoop - Tech Deep Dive
 
Docker Online Meetup: Announcing Docker CE + EE
Docker Online Meetup: Announcing Docker CE + EEDocker Online Meetup: Announcing Docker CE + EE
Docker Online Meetup: Announcing Docker CE + EE
 
3Com 07-0294-000
3Com 07-0294-0003Com 07-0294-000
3Com 07-0294-000
 

Similar to Containers: from development to production at DevNation 2015

LXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software DeliveryLXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software DeliveryDocker, Inc.
 
Workshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
Workshop : 45 minutes pour comprendre Docker avec Jérôme PetazzoniWorkshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
Workshop : 45 minutes pour comprendre Docker avec Jérôme PetazzoniTheFamily
 
Introduction to Docker at Glidewell Laboratories in Orange County
Introduction to Docker at Glidewell Laboratories in Orange CountyIntroduction to Docker at Glidewell Laboratories in Orange County
Introduction to Docker at Glidewell Laboratories in Orange CountyJérôme Petazzoni
 
Docker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los AngelesDocker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los AngelesJérôme Petazzoni
 
Introduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New YorkIntroduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New YorkJérôme Petazzoni
 
A Gentle Introduction to Docker and Containers
A Gentle Introduction to Docker and ContainersA Gentle Introduction to Docker and Containers
A Gentle Introduction to Docker and ContainersDocker, Inc.
 
Techtalks: taking docker to production
Techtalks: taking docker to productionTechtalks: taking docker to production
Techtalks: taking docker to productionmuayyad alsadi
 
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...Jérôme Petazzoni
 
Containing the world with Docker
Containing the world with DockerContaining the world with Docker
Containing the world with DockerGiuseppe Piccolo
 
Docker Fundamentals
Docker FundamentalsDocker Fundamentals
Docker FundamentalsAnshul Patel
 
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and JenkinsExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and JenkinsElasTest Project
 
Docker up and Running For Web Developers
Docker up and Running For Web DevelopersDocker up and Running For Web Developers
Docker up and Running For Web DevelopersBADR
 
Docker Up and Running for Web Developers
Docker Up and Running for Web DevelopersDocker Up and Running for Web Developers
Docker Up and Running for Web DevelopersAmr Fawzy
 
An Introduction To Docker
An Introduction To DockerAn Introduction To Docker
An Introduction To DockerJames fraser
 
Let's Containerize New York with Docker!
Let's Containerize New York with Docker!Let's Containerize New York with Docker!
Let's Containerize New York with Docker!Jérôme Petazzoni
 
Docker Intro at the Google Developer Group and Google Cloud Platform Meet Up
Docker Intro at the Google Developer Group and Google Cloud Platform Meet UpDocker Intro at the Google Developer Group and Google Cloud Platform Meet Up
Docker Intro at the Google Developer Group and Google Cloud Platform Meet UpJérôme Petazzoni
 

Similar to Containers: from development to production at DevNation 2015 (20)

LXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software DeliveryLXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software Delivery
 
Workshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
Workshop : 45 minutes pour comprendre Docker avec Jérôme PetazzoniWorkshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
Workshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
 
Introduction to Docker at Glidewell Laboratories in Orange County
Introduction to Docker at Glidewell Laboratories in Orange CountyIntroduction to Docker at Glidewell Laboratories in Orange County
Introduction to Docker at Glidewell Laboratories in Orange County
 
Docker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los AngelesDocker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los Angeles
 
Introduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New YorkIntroduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New York
 
A Gentle Introduction to Docker and Containers
A Gentle Introduction to Docker and ContainersA Gentle Introduction to Docker and Containers
A Gentle Introduction to Docker and Containers
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
JOSA TechTalks - Docker in Production
JOSA TechTalks - Docker in ProductionJOSA TechTalks - Docker in Production
JOSA TechTalks - Docker in Production
 
Techtalks: taking docker to production
Techtalks: taking docker to productionTechtalks: taking docker to production
Techtalks: taking docker to production
 
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
 
Containing the world with Docker
Containing the world with DockerContaining the world with Docker
Containing the world with Docker
 
Docker Fundamentals
Docker FundamentalsDocker Fundamentals
Docker Fundamentals
 
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and JenkinsExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
 
Docker+java
Docker+javaDocker+java
Docker+java
 
Docker up and Running For Web Developers
Docker up and Running For Web DevelopersDocker up and Running For Web Developers
Docker up and Running For Web Developers
 
Docker Up and Running for Web Developers
Docker Up and Running for Web DevelopersDocker Up and Running for Web Developers
Docker Up and Running for Web Developers
 
An Introduction To Docker
An Introduction To DockerAn Introduction To Docker
An Introduction To Docker
 
Let's Containerize New York with Docker!
Let's Containerize New York with Docker!Let's Containerize New York with Docker!
Let's Containerize New York with Docker!
 
Docker Intro at the Google Developer Group and Google Cloud Platform Meet Up
Docker Intro at the Google Developer Group and Google Cloud Platform Meet UpDocker Intro at the Google Developer Group and Google Cloud Platform Meet Up
Docker Intro at the Google Developer Group and Google Cloud Platform Meet Up
 
Docker_AGH_v0.1.3
Docker_AGH_v0.1.3Docker_AGH_v0.1.3
Docker_AGH_v0.1.3
 

More from Jérôme Petazzoni

Use the Source or Join the Dark Side: differences between Docker Community an...
Use the Source or Join the Dark Side: differences between Docker Community an...Use the Source or Join the Dark Side: differences between Docker Community an...
Use the Source or Join the Dark Side: differences between Docker Community an...Jérôme Petazzoni
 
Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...Jérôme Petazzoni
 
Pipework: Software-Defined Network for Containers and Docker
Pipework: Software-Defined Network for Containers and DockerPipework: Software-Defined Network for Containers and Docker
Pipework: Software-Defined Network for Containers and DockerJérôme Petazzoni
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
Docker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and securityDocker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and securityJérôme Petazzoni
 
Docker, Linux Containers, and Security: Does It Add Up?
Docker, Linux Containers, and Security: Does It Add Up?Docker, Linux Containers, and Security: Does It Add Up?
Docker, Linux Containers, and Security: Does It Add Up?Jérôme Petazzoni
 

More from Jérôme Petazzoni (7)

Use the Source or Join the Dark Side: differences between Docker Community an...
Use the Source or Join the Dark Side: differences between Docker Community an...Use the Source or Join the Dark Side: differences between Docker Community an...
Use the Source or Join the Dark Side: differences between Docker Community an...
 
Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...
 
Pipework: Software-Defined Network for Containers and Docker
Pipework: Software-Defined Network for Containers and DockerPipework: Software-Defined Network for Containers and Docker
Pipework: Software-Defined Network for Containers and Docker
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Killer Bugs From Outer Space
Killer Bugs From Outer SpaceKiller Bugs From Outer Space
Killer Bugs From Outer Space
 
Docker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and securityDocker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and security
 
Docker, Linux Containers, and Security: Does It Add Up?
Docker, Linux Containers, and Security: Does It Add Up?Docker, Linux Containers, and Security: Does It Add Up?
Docker, Linux Containers, and Security: Does It Add Up?
 

Recently uploaded

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 

Recently uploaded (20)

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

Containers: from development to production at DevNation 2015

  • 1.
  • 2. Containers from development to production Jérôme Petazzoni @jpetazzo Docker Inc. @docker
  • 3. Who am I? ● Jérôme Petazzoni (@jpetazzo) ● Joined Docker (dotCloud) more than 4 years ago (I was at Docker before it was cool!) ● I have built and scaled the dotCloud PaaS ● I learned a few things about running containers (in production)
  • 4. Outline ● Intro / pop quizz about Docker and containers ● VMs and containers: technical differences ● VMs and containers: functional differences ● Our goal: lean containers ● Composing stacks of containers
  • 6. Build, ship and run any app, anywhere
  • 7. Take any Linux program, and put it in a container ● Web apps and services, workers (Go, Java, Node, PHP, Python, Ruby…) ● Data stores: SQL, NoSQL, big data (Cassandra, ElasticSearch, Hadoop, Mongo, MySQL, PostgreSQL, Redis...) ● Other server-y things (Consul, Etcd, Mesos, RabbitMQ, Zookeeper...) ● Command-line tools (AWS CLI, Ffmpeg...) ● Desktop apps (Chrome, LibreOffice, Skype, Steam…)
  • 8. What about non-Linux programs? ● Desktop apps with Wine – e.g.: Spotify client ● Coming soon: Docker for Windows – run Windows app on Windows machines ● Coming soon: Docker for FreeBSD – port in progress ● Coming eventually: Docker for OS X – technically possible; but is this useful?
  • 9. Ship that container easily and efficiently ● Docker comes with an image distribution protocol ● Distribution server can be hosted by Docker Inc. – free for public images ● Distribution protocol is public ● Open source reference implementation – used by Docker Inc. for the public registry ● Container images are broken down into layers ● When updating and distributing an image, only ship relevant layers
  • 10. Run those containers anywhere ● Containers can run in VMs or in physical machines ● Docker is available on all modern Linux variants ● Many IAAS providers have server images with Docker ● On OS X and Windows dev machines: boot2docker ● There are distros dedicated to run Docker containers – Atomic, CoreOS, RancherOS, Snappy Core... ● Other Docker implementations exist (e.g. Joyent Triton) ● Docker-as-a-Service providers are blooming
  • 12. Portability ● Containers can run on top of public cloud – run the same container image everywhere ● Nested hypervisors (VMs in VMs) exist, but still rare ● Containers are easy to move – thanks to layers, distribution protocol, registry... ● VM images have to be converted and transferred – both are slow operations
  • 13. Format & environment ● VM – executes machine code – environment = something that looks like a computer ● JVM – executes JVM bytecode – environment = Java APIs ● Container – executes machine code – environment = Linux kernel system calls interface
  • 14. Containers have low overhead ● Normal* process(es) running on top of normal kernel ● No device emulation (no extra code path involved in I/O) ● Context switch between containers = context switch between processes ● Benchmarks show no difference at all between containers and bare metal (after adequate tuning and options have been selected) ● Containers have higher density *There are extra "labels" denoting membership to given namespaces and control groups. Similar to regular UID.
  • 15. VMs have stronger isolation ● Inter-VM communication must happen over the network – Some hypervisors have custom paths, but non-standard ● VMs can run as non-privileged processes on the host – Breaking out of a VM will have ~zero security impact ● Containers run on top of a single kernel – Kernel vulnerability can lead to full scale compromise ● Containers can share files, sockets, FIFOs, memory areas… – They can communicate with standard UNIX mechanisms
  • 16. Analogy: brick walls vs. room dividers ● Brick walls – sturdy – slow to build – messy to move ● Room dividers – fragile – deployed in seconds – moved easily
  • 17. Blurring lines ● Intel Clear Containers; Clever Cloud – stripped down VMs, boot super fast, tiny footprint ● Joyent Triton – Solaris "branded zones," running Linux binaries securely, exposing the Docker API ● Ongoing efforts to harden containers – GRSEC, SELinux, AppArmor
  • 19. Inside ● VMs need a full OS and associated tools (Backups, logging, periodic job execution, remote access...) ● Containers can go both ways: – machine container (runs init, cron, ssh, syslog ... and the app) – application container (runs the app and nothing else; relies on external mechanisms)
  • 20. VM lifecycle ● Option 1: long lifecycle (provisioning→update→update→…→update→disposal) – easily leads to configuration drift (subtle differences that add up over time) – requires tight configuration management ● Option 2: golden images (phoenix servers, immutable infrastructure ...) – create new image for each modification – deploy by replacing old servers with new servers – nice and clean, but heavy and complex to setup
  • 21. Container lifecycle ● Containers are created from an image ● Image creation is easy ● Image upgrade is fast ● Immutable infrastructure is easy to implement Why? Because container snapshots are extremely fast and cheap.
  • 22. Development process (VMs) ● Best practice in production = 1 VM per component ● Not realistic to have 1 VM per component in dev ● Also: prod has additional/different components (e.g.: logging, monitoring, service discovery...) ● Result: very different environment for dev & prod
  • 23. Development process (containers) ● Run tons of containers on dev machines ● Build the same container for dev & prod ● How do we provide container variants?
  • 24. Bloated containers ● Containers have all the software required for production ● In dev mode, only essential processes are started ● In prod mode, additional processes run as well ● Problems: – bigger containers – behavior can differ (because of extra processes) – extra processes duplicated between containers – hard to test those extra processes in isolation
  • 26. Principle ● "Do one thing, do it well" ● One container for the component itself ● One container for logging ● One container for monitoring ● One container for backups ● One container for debugging (when needed) ● etc.
  • 27. Implementation (general principles) ● Containers can share almost anything, selectively – files (logs, data at rest, audit) – network stack (traffic routing and analysis, monitoring) – process space, memory (process tracing and debugging)
  • 28. Let's dive into the details
  • 29. Logging (option 1: Docker logging drivers) ● Containers write to standard output ● Docker has different logging drivers: – writes to local JSON files by default – can send to syslog Imperfect solution for now, but will be improved. Preferred in the long run.
  • 30. Logging (option 2: shared log directory) ● Containers write regular files to a directory ● That directory is shared with another container docker run -d --name myapp1 -v /var/log myapp:v1.0 ● In development setup: docker run --volumes-from myapp1 ubuntu sh -c 'tail -F /var/log/*' ● In production: docker run -d --volumes-from myapp1 logcollector
  • 31. Logging takeaways ● Application can be "dumb" about logging ● Log collection and shipping happens in Docker, or in separate(s) container(s) ● Run custom log analyzer without changing app container (e.g. apachetop) ● Migrate logging system without changing app container
  • 32. "Yes, but..." ● "What about performance overhead?" – no performance overhead – both containers access files directly (just like processes running on the same machine) ● "What about synchronization issues?" – same as previous answer!
  • 33. Backups (file-based) ● Store mutable data on Docker volumes (same mechanism as for logs) ● Share volumes with special-purpose backup containers ● Put backup tools in the backup container (boto, rsync, s3cmd, unison...) docker run --volumes-from mydb1 ubuntu rsync -av /var/lib/ backup@remotehost:mydb1/ ● The whole setup doesn't touch the app (or DB) container
  • 34. Backups (network-based) ● Run the backup job (`pg_dump`, `mysqldump`, etc.) from a separate container ● Advantages (vs. running in the same container): – nothing to install in the app (or DB) container – if the backup job runs amok, it remains contained (!) – another team can maintain backup jobs (and be responsible for them)
  • 35. Network analysis ● Packet capture (`tcpdump`, `ngrep`, `ntop`, etc.) ● Low-level metrics (`netstat`, `ss`, etc.) ● Install required tools in a separate container image ● Run a container in the same *network namespace* docker run -d --name web1 nginx docker run -ti --net container:web1 tcpdump -pni eth0 docker run -ti --net container:web1 ubuntu ss -n --tcp
  • 36. Service discovery ● Docker can do linking and generic DNS injection ● Your code connects to e.g. redis (pretending that redis resolves to something) ● Docker adds a DNS alias* so that redis resolves to the right container, or to some external service ● In dev, Docker Compose manages service dependencies ● In prod, you abstract service discovery from the container *Really, an entry in the container's /etc/hosts
  • 37. Service discovery in practice ● When service A needs to talk to service B... 1. Start container B on a Docker host 2. Retrieve host+port allocated for B 3. Start ambassador (relaying to this host+port) 4. Start container A linked to ambassador 5. Profit!
  • 38. General pattern ● Your code runs in the same container in dev and prod ● Add "sidekick*" containers for additional tasks ● Developers don't have to be bothered about ops ● Ops can do their job without messing with devs' code *Kubernetes sometimes calls them "sidecars."
  • 39. Composing stacks of containers
  • 41. docker-compose.yml rng: build: rng redis: image: redis webui: build: webui links: - redis ports: - "80:80" hasher: build: hasher worker: build: worker links: - rng - hasher - redis
  • 42. Docker Compose ● Start whole stack with `docker-compose up` ● Start individual containers (and their dependencies) with `docker-compose up xyz` ● Takes care of container lifecycle (creation, update, data persistence, scaling up/down...) ● Doesn't automatically solve networking and discovery (yet) ... However ...
  • 43. docker-compose.yml, reloaded hasher: build: hasher worker: build: worker links: - rng - hasherproxy:hasher - redis hasherproxy: image: jpetazzo/hamba links: - hasher command: 80 hasher 80 (This was automatically generated by a tiny Python script.)
  • 44. Heads up! ● Docker networking is evolving quickly ● Docker 1.7 (released last week) supports internally: – "networks" as first class objects – multiple networks – overlay driver allowing to span networks across multiple hosts – networking plugins from ecosystem partners ● Those features will gradually be exposed over API/CLI ● Check the DockerCon demos!
  • 46. ● Containers can share more context than VMs ● We can use this to decouple complexity (think "microservices" but for ops/devs separation) ● All tasks typically requiring VM access can be done in separate containers ● As a result, deployments are broken down in smaller, simpler pieces ● Complex stacks are expressed with simple YAML files ● Docker isn't a "silver bullet" to solve all problems, but it gives us tools that make our jobs easier