SlideShare a Scribd company logo
7 REASONS TO START USING 
DOCKER 
TARAS LYAPUN
https://flic.kr/p/dd2R3Ld
DOCKER IS NOT A 
NEW VAGRANT! 
3 
REASON #1
LINUX CONTAINER 
• OPERATING SYSTEM–LEVEL VIRTUALIZATION 
• CGROUPS 
• NAMESPACE 
4
5
6 
VIRTUAL MACHINE CONTAINER 
ISOLATION COMPLETE ALMOST 
COMPLETE 
DENSITY x1 x3 
OVERHEAD HIGH LOW 
STARTUP SPEED 30 - 60 sec ~1 second
DOCKER IS SIMPLE! 
7 
REASON #2
DOCKERFILE 
8 
FROM ubuntu 
RUN apt-get install -y python 
ADD ./app /app 
RUN pip install -r /app/requirements.txt 
WORKDIR /app 
EXPOSE 8000 
VOLUME /app/logs 
CMD /app/gunicorn.sh
COMMAND LINE INTERFACE 
9 
~ docker build -t test-image . 
~ docker run -d -p 8000:8000  
-v /var/logs/docker:/app/logs  
—restart=always  
test-image 
~ docker push your-repo/test-image
IDENTITY AND 
REPEATABILITY OF DEV, 
TEST AND PROD 
ENVIRONMENT 
10 
REASON #3
VAGRANT 
11
DOCKER 
12
FIG 
13 
web: 
build: . 
command: python app.py 
links: 
- db 
ports: 
- "8000:8000" 
db: 
image: postgres 
~ fig up 
http://www.fig.sh/
IDEAL CI + CD* 
*from my point of view 
14
SIMPLE DEPLOYMENT 
15 
REASON #4
BEFORE DOCKER 
16
AFTER DOCKER 
17
BEFORE DOCKER 
• --- 
• # INSTALL ELASTICSEARCH 
• # INSTALL APT KEY 
• - APT_KEY: URL=HTTP://PACKAGES.ELASTICSEARCH.ORG/GPG-KEY-ELASTICSEARCH 
STATE=PRESENT 
• # SET DEDICATED REPOSITORY 
• - APT_REPOSITORY: REPO='DEB HTTP://PACKAGES.ELASTICSEARCH.ORG/ 
ELASTICSEARCH/{{ES_VERSION}}/DEBIAN STABLE MAIN' STATE=PRESENT 
• # INSTALL ELASTICSEARCH WITH DEPENDANCIES 
• - NAME: INSTALL ELASTICSEARCH 
• APT: NAME={{ ITEM }} STATE=LATEST FORCE=YES 
• TAGS: ELASTICSEARCH 
• WITH_ITEMS: 
• - ELASTICSEARCH 
• - OPENJDK-7-JRE-HEADLESS 
• - OPENNTPD 
• NOTIFY: INIT ELASTICSEARCH 
• # SET LIMITS.CONF 
• - NAME: LIMITS.CONF TUNING 
• LINEINFILE: DEST=/ETC/SECURITY/LIMITS.CONF LINE="{{ ITEM }}" 
• TAGS: ELASTICSEARCH 
• WITH_ITEMS: 
• - 'ELASTICSEARCH SOFT NOFILE 32000' 
• - 'ELASTICSEARCH HARD NOFILE 32000' 
• # ENSURE SERVICE STARTED 
• - SERVICE: NAME=ELASTICSEARCH STATE=STARTED 
• # INSTALL PLUGINS 
• - INCLUDE: PLUGINS.YML 
18
AFTER DOCKER 
~ DOCKER PULL DOCKERFILE/ELASTICSEARCH 
~ DOCKER RUN -D -P 9200:9200 -V /VAR/DATA:/DATA  
DOCKERFILE/ELASTICSEARCH 
19 
• --- 
• # INSTALL ELASTICSEARCH 
• # INSTALL APT KEY 
• - APT_KEY: URL HTTP 
STATE=PRESENT 
• # SET DEDICATED REPOSITORY 
• - APT_REPOSITORY 
ELASTICSEARCH/{{ES 
• # INSTALL ELASTICSEARCH 
• - NAME: INSTALL ELASTICSEARCH 
• APT: NAME={{ ITEM 
• TAGS: ELASTICSEARCH 
• WITH_ITEMS: 
• - ELASTICSEARCH 
• - OPENJDK-7-JRE 
• - OPENNTPD 
• NOTIFY 
• # SET LIMITS 
• - NAME LIMITS 
• LINEINFILE 
• TAGS: ELASTICSEARCH 
• WITH_ITEMS 
• - 'ELASTICSEARCH 
• - 'ELASTICSEARCH 
• # ENSURE 
• - SERVICE 
• # INSTALL 
• - INCLUDE
DOCKERFILE 
20 
FROM ubuntu 
RUN apt-get install -y python 
ADD ./app /app 
RUN pip install -r /app/requirements.txt 
WORKDIR /app 
EXPOSE 8000 
VOLUME /app/logs 
CMD /app/gunicorn.sh
SIMPLE ROLLBACK 
~ DOCKER STOP NEW_CONTAINER 
~ DOCKER START OLD_CONTAINER 
21
IMAGE REUSE 
FROM IDEAL-PYTHON-ENVIRONMENT 
# SPECIFIC CODE 
22
EASY TO BUILD YOUR 
OWN PLATFORM 
23 
REASON #5
WHY MAY YOU NEED PAAS? 
• A LOT OF PROJECTS 
• SERVICE-ORIENTED ARCHITECTURE 
• A LOT OF TESTING ENVIRONMENTS 
• CONTINUOUS DEPLOYMENT 
• SCALABILITY 
24
OPENSOURCE PAAS BUILT WITH DOCKER 
• DOKKU 
• DEIS 
• FLYNN 
• BUILD YOUR OWN 
25
DOCKER FORCES YOU 
TO THINK ABOUT 
SCALE 
26 
REASON #6
THE TWELVE-FACTOR APP 
• DECLARATIVE FORMAT FOR SETUP AUTOMATION 
• CLEAN CONTRACT WITH UNDERLYING OS 
• SUITABLE FOR DEPLOYMENT ON MODERN CLOUD PLATFORMS 
• MINIMIZE DIVERGENCE BETWEEN DEV AND PROD 
• CAN SCALE UP WITHOUT SIGNIFICANT CHANGES TO TOOLING 
OR ARCHITECTURE 
http://12fact2o7 r.net
1. CODEBASE 
One codebase tracked in revision control, many deploys 
28
2. DEPENDENCIES 
29 
Explicitly declare and isolate dependencies
3. CONFIG 
30 
Store config in the environment 
• SETTINGS_LOCAL.PY 
• ~ DOCKER RUN -D -E SMTP_SERVER_PASSWORD=12345  
PROJECT/APP
4. BACKING SERVICES 
31 
Treat backing services as attached resources 
• DOCKER RUN -D —NAME=DB POSTGRES 
• DOCKER RUN -D —LINK DB:DB PROJECT/APP 
• MULTIHOST: HTTP://STACKOVERFLOW.COM/QUESTIONS/18285212/ 
HOW-TO-SCALE-DOCKER-CONTAINERS-IN-PRODUCTION
5. BUILD, CONFIG, RELEASE 
32 
Strictly separate build and run stages 
BUILD: 
DOCKER BUILD . 
CONFIG: 
DOCKER CREATE 
RELEASE: 
DOCKER START
6. PROCESSES 
Execute the app as one or more stateless processes 
33 
DOCKER CONTAINER STATELESS BY DEFAULT
7. PORT BINDING 
34 
Export services via port binding 
~ DOCKER RUN -P 8000:80 PROJECT/APP
8. CONCURRENCY 
35 
Scale out via the process model
9. DISPOSABILITY 
Maximize robustness with fast startup and graceful 
shutdown 
36 
~ DOCKER STOP CONTAINER_NAME 
~ DOCKER START CONTAINER_NAME
10. DEV/PROD PARITY 
37 
Keep development, staging, and production 
as similar as possible 
SLIDE # 11
11. LOGS 
38 
Treat logs as event streams 
~ DOCKER LOGS CONTAINER_NAME
12. ADMIN PROCESSES 
Run admin/management tasks as one-off processes 
39 
~ DOCKER RUN PROJECT/APP /BIN/RUN_GUNICORN.SH 
~ DOCKER RUN PROJECT/APP /BIN/RUN_CELERY.SH 
~ DOCKER RUN PROJECT/APP PYTHON MANAGE.PY MIGRATE 
~ DOCKER EXEC CONTAINER_NAME PYTHON MANAGE.PY ANYTHING
DOCKER IS A NEW 
BUZZ WORD* 
40 
REASON #7 
* in a good sense
INTEREST GROWING 
March 2013 October 2014 
41
CRIU 
•FREEZE A RUNNING APPLICATION 
•CHECKPOINT IT TO A HARD DRIVE 
•RESTORE AND RUN THE APPLICATION 
42
CORE OS 
•NEW RE-ARCHITECTED LINIX DISTRIBUTION 
•MINIMAL RAM USAGE 
•APPLICATIONS RUN AS DOCKER CONTAINERS 
•DESIGNED FOR SCALE 
43
QUESTIONS, COMMENTS, THOUGHTS? 
TARAS LIAPUN 
@TLYAPUN 
TARASLYAPUN@GMAIL.COM 
44

More Related Content

What's hot

Kubernetes on AWS at Zalando: Failures & Learnings - DevOps NRW
Kubernetes on AWS at Zalando: Failures & Learnings - DevOps NRWKubernetes on AWS at Zalando: Failures & Learnings - DevOps NRW
Kubernetes on AWS at Zalando: Failures & Learnings - DevOps NRW
Henning Jacobs
 
Salty OPS – Saltstack Introduction
Salty OPS – Saltstack IntroductionSalty OPS – Saltstack Introduction
Salty OPS – Saltstack IntroductionWalter Liu
 
Containerize ovs ovn components
Containerize ovs ovn componentsContainerize ovs ovn components
Containerize ovs ovn components
Aliasgar Ginwala
 
Tick Stack - Listen your infrastructure and please sleep
Tick Stack - Listen your infrastructure and please sleepTick Stack - Listen your infrastructure and please sleep
Tick Stack - Listen your infrastructure and please sleep
Gianluca Arbezzano
 
Migrating the Online’s console with Docker
Migrating the Online’s console with DockerMigrating the Online’s console with Docker
Migrating the Online’s console with Docker
Scaleway
 
5 Vampir Configuration At IU
5 Vampir Configuration At IU5 Vampir Configuration At IU
5 Vampir Configuration At IUPTIHPA
 
Lee Myers - What To Do When Nagios Notification Don't Meet Your Needs.
Lee Myers - What To Do When Nagios Notification Don't Meet Your Needs.Lee Myers - What To Do When Nagios Notification Don't Meet Your Needs.
Lee Myers - What To Do When Nagios Notification Don't Meet Your Needs.
Nagios
 
NGINX_conf_2016_talk
NGINX_conf_2016_talkNGINX_conf_2016_talk
NGINX_conf_2016_talk
kunalvjti
 
Writing Custom Saltstack Execution Modules
Writing Custom Saltstack Execution ModulesWriting Custom Saltstack Execution Modules
Writing Custom Saltstack Execution Modules
Julian Pacheco
 
Compliance as Code: Velocity with Security - Fraser Pollock, Chef
Compliance as Code: Velocity with Security - Fraser Pollock, ChefCompliance as Code: Velocity with Security - Fraser Pollock, Chef
Compliance as Code: Velocity with Security - Fraser Pollock, Chef
Alert Logic
 
Trevor McDonald - Nagios XI Under The Hood
Trevor McDonald  - Nagios XI Under The HoodTrevor McDonald  - Nagios XI Under The Hood
Trevor McDonald - Nagios XI Under The Hood
Nagios
 
KubeCon London 2016 Ronana Cloud Native SDN
KubeCon London 2016 Ronana Cloud Native SDNKubeCon London 2016 Ronana Cloud Native SDN
KubeCon London 2016 Ronana Cloud Native SDN
Romana Project
 
OSMC 2014: Monitoring VoIP Systems | Sebastian Damm
OSMC 2014: Monitoring VoIP Systems | Sebastian DammOSMC 2014: Monitoring VoIP Systems | Sebastian Damm
OSMC 2014: Monitoring VoIP Systems | Sebastian Damm
NETWAYS
 
How to monitor NGINX
How to monitor NGINXHow to monitor NGINX
How to monitor NGINX
Server Density
 
Cloud Native SDN
Cloud Native SDNCloud Native SDN
Cloud Native SDN
Romana Project
 
Nxll21 ospf filtering & summarization
Nxll21 ospf filtering & summarizationNxll21 ospf filtering & summarization
Nxll21 ospf filtering & summarization
Netwax Lab
 
Loophole: Timing Attacks on Shared Event Loops in Chrome
Loophole: Timing Attacks on Shared Event Loops in ChromeLoophole: Timing Attacks on Shared Event Loops in Chrome
Loophole: Timing Attacks on Shared Event Loops in Chrome
cgvwzq
 
Getting started with RDO Havana
Getting started with RDO HavanaGetting started with RDO Havana
Getting started with RDO Havana
Dan Radez
 
NGINX: Basics & Best Practices - EMEA Broadcast
NGINX: Basics & Best Practices - EMEA BroadcastNGINX: Basics & Best Practices - EMEA Broadcast
NGINX: Basics & Best Practices - EMEA Broadcast
NGINX, Inc.
 
Nginx internals
Nginx internalsNginx internals
Nginx internalsliqiang xu
 

What's hot (20)

Kubernetes on AWS at Zalando: Failures & Learnings - DevOps NRW
Kubernetes on AWS at Zalando: Failures & Learnings - DevOps NRWKubernetes on AWS at Zalando: Failures & Learnings - DevOps NRW
Kubernetes on AWS at Zalando: Failures & Learnings - DevOps NRW
 
Salty OPS – Saltstack Introduction
Salty OPS – Saltstack IntroductionSalty OPS – Saltstack Introduction
Salty OPS – Saltstack Introduction
 
Containerize ovs ovn components
Containerize ovs ovn componentsContainerize ovs ovn components
Containerize ovs ovn components
 
Tick Stack - Listen your infrastructure and please sleep
Tick Stack - Listen your infrastructure and please sleepTick Stack - Listen your infrastructure and please sleep
Tick Stack - Listen your infrastructure and please sleep
 
Migrating the Online’s console with Docker
Migrating the Online’s console with DockerMigrating the Online’s console with Docker
Migrating the Online’s console with Docker
 
5 Vampir Configuration At IU
5 Vampir Configuration At IU5 Vampir Configuration At IU
5 Vampir Configuration At IU
 
Lee Myers - What To Do When Nagios Notification Don't Meet Your Needs.
Lee Myers - What To Do When Nagios Notification Don't Meet Your Needs.Lee Myers - What To Do When Nagios Notification Don't Meet Your Needs.
Lee Myers - What To Do When Nagios Notification Don't Meet Your Needs.
 
NGINX_conf_2016_talk
NGINX_conf_2016_talkNGINX_conf_2016_talk
NGINX_conf_2016_talk
 
Writing Custom Saltstack Execution Modules
Writing Custom Saltstack Execution ModulesWriting Custom Saltstack Execution Modules
Writing Custom Saltstack Execution Modules
 
Compliance as Code: Velocity with Security - Fraser Pollock, Chef
Compliance as Code: Velocity with Security - Fraser Pollock, ChefCompliance as Code: Velocity with Security - Fraser Pollock, Chef
Compliance as Code: Velocity with Security - Fraser Pollock, Chef
 
Trevor McDonald - Nagios XI Under The Hood
Trevor McDonald  - Nagios XI Under The HoodTrevor McDonald  - Nagios XI Under The Hood
Trevor McDonald - Nagios XI Under The Hood
 
KubeCon London 2016 Ronana Cloud Native SDN
KubeCon London 2016 Ronana Cloud Native SDNKubeCon London 2016 Ronana Cloud Native SDN
KubeCon London 2016 Ronana Cloud Native SDN
 
OSMC 2014: Monitoring VoIP Systems | Sebastian Damm
OSMC 2014: Monitoring VoIP Systems | Sebastian DammOSMC 2014: Monitoring VoIP Systems | Sebastian Damm
OSMC 2014: Monitoring VoIP Systems | Sebastian Damm
 
How to monitor NGINX
How to monitor NGINXHow to monitor NGINX
How to monitor NGINX
 
Cloud Native SDN
Cloud Native SDNCloud Native SDN
Cloud Native SDN
 
Nxll21 ospf filtering & summarization
Nxll21 ospf filtering & summarizationNxll21 ospf filtering & summarization
Nxll21 ospf filtering & summarization
 
Loophole: Timing Attacks on Shared Event Loops in Chrome
Loophole: Timing Attacks on Shared Event Loops in ChromeLoophole: Timing Attacks on Shared Event Loops in Chrome
Loophole: Timing Attacks on Shared Event Loops in Chrome
 
Getting started with RDO Havana
Getting started with RDO HavanaGetting started with RDO Havana
Getting started with RDO Havana
 
NGINX: Basics & Best Practices - EMEA Broadcast
NGINX: Basics & Best Practices - EMEA BroadcastNGINX: Basics & Best Practices - EMEA Broadcast
NGINX: Basics & Best Practices - EMEA Broadcast
 
Nginx internals
Nginx internalsNginx internals
Nginx internals
 

Viewers also liked

The collaboration network in OSM - the case of Italy
The collaboration network in OSM - the case of Italy The collaboration network in OSM - the case of Italy
The collaboration network in OSM - the case of Italy
Maurizio Napolitano
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
Wim Godden
 
Google Analytics - Guia de Campo
Google Analytics - Guia de CampoGoogle Analytics - Guia de Campo
Google Analytics - Guia de Campo
Igor Cruz
 
jclouds BoF
jclouds BoFjclouds BoF
jclouds BoF
Everett Toews
 
Responsive Web Design - What You Need to Know to Get Started
Responsive Web Design - What You Need to Know to Get StartedResponsive Web Design - What You Need to Know to Get Started
Responsive Web Design - What You Need to Know to Get Startedjennybchicken
 
The Big Power Shift in Media
The Big Power Shift in MediaThe Big Power Shift in Media
The Big Power Shift in Media
Isabelle Quevilly
 
Beyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeBeyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the code
Wim Godden
 
NFC exchange workshop
NFC exchange workshopNFC exchange workshop
NFC exchange workshop
Dirk Spannaus
 
Data rich chemistry inside wikipedia and other wikis
Data rich chemistry inside wikipedia and other wikis Data rich chemistry inside wikipedia and other wikis
Data rich chemistry inside wikipedia and other wikis Martin Walker
 
Is having no limits a limitation [distilled version]
Is having no limits a limitation [distilled version]Is having no limits a limitation [distilled version]
Is having no limits a limitation [distilled version]
Ben Brignell
 
Something from Nothing: Simple Ways to Look Sharp When Time is Short
Something from Nothing: Simple Ways to Look Sharp When Time is ShortSomething from Nothing: Simple Ways to Look Sharp When Time is Short
Something from Nothing: Simple Ways to Look Sharp When Time is Short
kenwtw
 
Wakanda#1
Wakanda#1Wakanda#1
Wakanda#1
kmiyako
 
Instant LAMP Stack with Vagrant and Puppet
Instant LAMP Stack with Vagrant and PuppetInstant LAMP Stack with Vagrant and Puppet
Instant LAMP Stack with Vagrant and Puppet
Patrick Lee
 
Enrique Allen, D Fund - Warm Gun Conference
Enrique Allen, D Fund - Warm Gun ConferenceEnrique Allen, D Fund - Warm Gun Conference
Enrique Allen, D Fund - Warm Gun Conference
500 Startups
 
Lean Agile Adoption Enterprise Challenges - XP 2012
Lean Agile Adoption Enterprise Challenges - XP 2012Lean Agile Adoption Enterprise Challenges - XP 2012
Lean Agile Adoption Enterprise Challenges - XP 2012
Fabio Armani
 
All out in the Cloud - CloudEast 2012
All out in the Cloud - CloudEast 2012All out in the Cloud - CloudEast 2012
All out in the Cloud - CloudEast 2012Jan Jongboom
 
Keeping 100m+ users happy: How we test Shazam on Android
Keeping 100m+ users happy: How we test Shazam on AndroidKeeping 100m+ users happy: How we test Shazam on Android
Keeping 100m+ users happy: How we test Shazam on AndroidIordanis (Jordan) Giannakakis
 
Viva city open smart city platform
Viva city open smart city platformViva city open smart city platform
Viva city open smart city platformMarco Montanari
 
Desconf 2011 - Usar e esquecer suas ideias
Desconf 2011 - Usar e esquecer suas ideias    Desconf 2011 - Usar e esquecer suas ideias
Desconf 2011 - Usar e esquecer suas ideias
Hélio Medeiros
 

Viewers also liked (20)

The collaboration network in OSM - the case of Italy
The collaboration network in OSM - the case of Italy The collaboration network in OSM - the case of Italy
The collaboration network in OSM - the case of Italy
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
 
Google Analytics - Guia de Campo
Google Analytics - Guia de CampoGoogle Analytics - Guia de Campo
Google Analytics - Guia de Campo
 
jclouds BoF
jclouds BoFjclouds BoF
jclouds BoF
 
Responsive Web Design - What You Need to Know to Get Started
Responsive Web Design - What You Need to Know to Get StartedResponsive Web Design - What You Need to Know to Get Started
Responsive Web Design - What You Need to Know to Get Started
 
The Big Power Shift in Media
The Big Power Shift in MediaThe Big Power Shift in Media
The Big Power Shift in Media
 
Beyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeBeyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the code
 
NFC exchange workshop
NFC exchange workshopNFC exchange workshop
NFC exchange workshop
 
Data rich chemistry inside wikipedia and other wikis
Data rich chemistry inside wikipedia and other wikis Data rich chemistry inside wikipedia and other wikis
Data rich chemistry inside wikipedia and other wikis
 
HTTP 2
HTTP 2HTTP 2
HTTP 2
 
Is having no limits a limitation [distilled version]
Is having no limits a limitation [distilled version]Is having no limits a limitation [distilled version]
Is having no limits a limitation [distilled version]
 
Something from Nothing: Simple Ways to Look Sharp When Time is Short
Something from Nothing: Simple Ways to Look Sharp When Time is ShortSomething from Nothing: Simple Ways to Look Sharp When Time is Short
Something from Nothing: Simple Ways to Look Sharp When Time is Short
 
Wakanda#1
Wakanda#1Wakanda#1
Wakanda#1
 
Instant LAMP Stack with Vagrant and Puppet
Instant LAMP Stack with Vagrant and PuppetInstant LAMP Stack with Vagrant and Puppet
Instant LAMP Stack with Vagrant and Puppet
 
Enrique Allen, D Fund - Warm Gun Conference
Enrique Allen, D Fund - Warm Gun ConferenceEnrique Allen, D Fund - Warm Gun Conference
Enrique Allen, D Fund - Warm Gun Conference
 
Lean Agile Adoption Enterprise Challenges - XP 2012
Lean Agile Adoption Enterprise Challenges - XP 2012Lean Agile Adoption Enterprise Challenges - XP 2012
Lean Agile Adoption Enterprise Challenges - XP 2012
 
All out in the Cloud - CloudEast 2012
All out in the Cloud - CloudEast 2012All out in the Cloud - CloudEast 2012
All out in the Cloud - CloudEast 2012
 
Keeping 100m+ users happy: How we test Shazam on Android
Keeping 100m+ users happy: How we test Shazam on AndroidKeeping 100m+ users happy: How we test Shazam on Android
Keeping 100m+ users happy: How we test Shazam on Android
 
Viva city open smart city platform
Viva city open smart city platformViva city open smart city platform
Viva city open smart city platform
 
Desconf 2011 - Usar e esquecer suas ideias
Desconf 2011 - Usar e esquecer suas ideias    Desconf 2011 - Usar e esquecer suas ideias
Desconf 2011 - Usar e esquecer suas ideias
 

Similar to 7 reasons to start using Docker

Docker for the Brave
Docker for the BraveDocker for the Brave
Docker for the Brave
David Schmitz
 
Real World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionReal World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and Production
Ben Hall
 
Docker HK Meetup - 201707
Docker HK Meetup - 201707Docker HK Meetup - 201707
Docker HK Meetup - 201707
Clarence Ho
 
Docker at Flux7
Docker at Flux7Docker at Flux7
Docker at Flux7
Aater Suleman
 
Get started with docker & dev ops
Get started with docker & dev opsGet started with docker & dev ops
Get started with docker & dev ops
Asya Dudnik
 
Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...
Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...
Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...
Henning Jacobs
 
EMC World 2016 - code.09 Introduction to the Docker Platform
EMC World 2016 - code.09 Introduction to the Docker PlatformEMC World 2016 - code.09 Introduction to the Docker Platform
EMC World 2016 - code.09 Introduction to the Docker Platform
{code}
 
Start tracking your ruby infrastructure
Start tracking your ruby infrastructureStart tracking your ruby infrastructure
Start tracking your ruby infrastructure
Sergiy Kukunin
 
DockerCon EU '17 - Dockerizing Aurea
DockerCon EU '17 - Dockerizing AureaDockerCon EU '17 - Dockerizing Aurea
DockerCon EU '17 - Dockerizing Aurea
Łukasz Piątkowski
 
Get started with docker & dev ops
Get started with docker & dev opsGet started with docker & dev ops
Get started with docker & dev ops
Asya Dudnik
 
Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)
Ben Hall
 
The age of orchestration: from Docker basics to cluster management
The age of orchestration: from Docker basics to cluster managementThe age of orchestration: from Docker basics to cluster management
The age of orchestration: from Docker basics to cluster management
Nicola Paolucci
 
New Docker Features for Orchestration and Containers
New Docker Features for Orchestration and ContainersNew Docker Features for Orchestration and Containers
New Docker Features for Orchestration and Containers
Jeff Anderson
 
Docker Introduction.pdf
Docker Introduction.pdfDocker Introduction.pdf
Docker Introduction.pdf
OKLABS
 
JDO 2019: Container orchestration with Docker Swarm - Jakub Hajek
JDO 2019: Container orchestration with Docker Swarm - Jakub HajekJDO 2019: Container orchestration with Docker Swarm - Jakub Hajek
JDO 2019: Container orchestration with Docker Swarm - Jakub Hajek
PROIDEA
 
Docker, the Future of DevOps
Docker, the Future of DevOpsDocker, the Future of DevOps
Docker, the Future of DevOps
andersjanmyr
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
Troublemaker Khunpech
 
Kubernetes Networking - Giragadurai Vallirajan
Kubernetes Networking - Giragadurai VallirajanKubernetes Networking - Giragadurai Vallirajan
Kubernetes Networking - Giragadurai Vallirajan
Neependra Khare
 
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
Agile Testing Alliance
 
DPDK in Containers Hands-on Lab
DPDK in Containers Hands-on LabDPDK in Containers Hands-on Lab
DPDK in Containers Hands-on Lab
Michelle Holley
 

Similar to 7 reasons to start using Docker (20)

Docker for the Brave
Docker for the BraveDocker for the Brave
Docker for the Brave
 
Real World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionReal World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and Production
 
Docker HK Meetup - 201707
Docker HK Meetup - 201707Docker HK Meetup - 201707
Docker HK Meetup - 201707
 
Docker at Flux7
Docker at Flux7Docker at Flux7
Docker at Flux7
 
Get started with docker & dev ops
Get started with docker & dev opsGet started with docker & dev ops
Get started with docker & dev ops
 
Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...
Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...
Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...
 
EMC World 2016 - code.09 Introduction to the Docker Platform
EMC World 2016 - code.09 Introduction to the Docker PlatformEMC World 2016 - code.09 Introduction to the Docker Platform
EMC World 2016 - code.09 Introduction to the Docker Platform
 
Start tracking your ruby infrastructure
Start tracking your ruby infrastructureStart tracking your ruby infrastructure
Start tracking your ruby infrastructure
 
DockerCon EU '17 - Dockerizing Aurea
DockerCon EU '17 - Dockerizing AureaDockerCon EU '17 - Dockerizing Aurea
DockerCon EU '17 - Dockerizing Aurea
 
Get started with docker & dev ops
Get started with docker & dev opsGet started with docker & dev ops
Get started with docker & dev ops
 
Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)
 
The age of orchestration: from Docker basics to cluster management
The age of orchestration: from Docker basics to cluster managementThe age of orchestration: from Docker basics to cluster management
The age of orchestration: from Docker basics to cluster management
 
New Docker Features for Orchestration and Containers
New Docker Features for Orchestration and ContainersNew Docker Features for Orchestration and Containers
New Docker Features for Orchestration and Containers
 
Docker Introduction.pdf
Docker Introduction.pdfDocker Introduction.pdf
Docker Introduction.pdf
 
JDO 2019: Container orchestration with Docker Swarm - Jakub Hajek
JDO 2019: Container orchestration with Docker Swarm - Jakub HajekJDO 2019: Container orchestration with Docker Swarm - Jakub Hajek
JDO 2019: Container orchestration with Docker Swarm - Jakub Hajek
 
Docker, the Future of DevOps
Docker, the Future of DevOpsDocker, the Future of DevOps
Docker, the Future of DevOps
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
 
Kubernetes Networking - Giragadurai Vallirajan
Kubernetes Networking - Giragadurai VallirajanKubernetes Networking - Giragadurai Vallirajan
Kubernetes Networking - Giragadurai Vallirajan
 
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
 
DPDK in Containers Hands-on Lab
DPDK in Containers Hands-on LabDPDK in Containers Hands-on Lab
DPDK in Containers Hands-on Lab
 

Recently uploaded

2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Yara Milbes
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 

Recently uploaded (20)

2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 

7 reasons to start using Docker

  • 1. 7 REASONS TO START USING DOCKER TARAS LYAPUN
  • 3. DOCKER IS NOT A NEW VAGRANT! 3 REASON #1
  • 4. LINUX CONTAINER • OPERATING SYSTEM–LEVEL VIRTUALIZATION • CGROUPS • NAMESPACE 4
  • 5. 5
  • 6. 6 VIRTUAL MACHINE CONTAINER ISOLATION COMPLETE ALMOST COMPLETE DENSITY x1 x3 OVERHEAD HIGH LOW STARTUP SPEED 30 - 60 sec ~1 second
  • 7. DOCKER IS SIMPLE! 7 REASON #2
  • 8. DOCKERFILE 8 FROM ubuntu RUN apt-get install -y python ADD ./app /app RUN pip install -r /app/requirements.txt WORKDIR /app EXPOSE 8000 VOLUME /app/logs CMD /app/gunicorn.sh
  • 9. COMMAND LINE INTERFACE 9 ~ docker build -t test-image . ~ docker run -d -p 8000:8000 -v /var/logs/docker:/app/logs —restart=always test-image ~ docker push your-repo/test-image
  • 10. IDENTITY AND REPEATABILITY OF DEV, TEST AND PROD ENVIRONMENT 10 REASON #3
  • 13. FIG 13 web: build: . command: python app.py links: - db ports: - "8000:8000" db: image: postgres ~ fig up http://www.fig.sh/
  • 14. IDEAL CI + CD* *from my point of view 14
  • 15. SIMPLE DEPLOYMENT 15 REASON #4
  • 18. BEFORE DOCKER • --- • # INSTALL ELASTICSEARCH • # INSTALL APT KEY • - APT_KEY: URL=HTTP://PACKAGES.ELASTICSEARCH.ORG/GPG-KEY-ELASTICSEARCH STATE=PRESENT • # SET DEDICATED REPOSITORY • - APT_REPOSITORY: REPO='DEB HTTP://PACKAGES.ELASTICSEARCH.ORG/ ELASTICSEARCH/{{ES_VERSION}}/DEBIAN STABLE MAIN' STATE=PRESENT • # INSTALL ELASTICSEARCH WITH DEPENDANCIES • - NAME: INSTALL ELASTICSEARCH • APT: NAME={{ ITEM }} STATE=LATEST FORCE=YES • TAGS: ELASTICSEARCH • WITH_ITEMS: • - ELASTICSEARCH • - OPENJDK-7-JRE-HEADLESS • - OPENNTPD • NOTIFY: INIT ELASTICSEARCH • # SET LIMITS.CONF • - NAME: LIMITS.CONF TUNING • LINEINFILE: DEST=/ETC/SECURITY/LIMITS.CONF LINE="{{ ITEM }}" • TAGS: ELASTICSEARCH • WITH_ITEMS: • - 'ELASTICSEARCH SOFT NOFILE 32000' • - 'ELASTICSEARCH HARD NOFILE 32000' • # ENSURE SERVICE STARTED • - SERVICE: NAME=ELASTICSEARCH STATE=STARTED • # INSTALL PLUGINS • - INCLUDE: PLUGINS.YML 18
  • 19. AFTER DOCKER ~ DOCKER PULL DOCKERFILE/ELASTICSEARCH ~ DOCKER RUN -D -P 9200:9200 -V /VAR/DATA:/DATA DOCKERFILE/ELASTICSEARCH 19 • --- • # INSTALL ELASTICSEARCH • # INSTALL APT KEY • - APT_KEY: URL HTTP STATE=PRESENT • # SET DEDICATED REPOSITORY • - APT_REPOSITORY ELASTICSEARCH/{{ES • # INSTALL ELASTICSEARCH • - NAME: INSTALL ELASTICSEARCH • APT: NAME={{ ITEM • TAGS: ELASTICSEARCH • WITH_ITEMS: • - ELASTICSEARCH • - OPENJDK-7-JRE • - OPENNTPD • NOTIFY • # SET LIMITS • - NAME LIMITS • LINEINFILE • TAGS: ELASTICSEARCH • WITH_ITEMS • - 'ELASTICSEARCH • - 'ELASTICSEARCH • # ENSURE • - SERVICE • # INSTALL • - INCLUDE
  • 20. DOCKERFILE 20 FROM ubuntu RUN apt-get install -y python ADD ./app /app RUN pip install -r /app/requirements.txt WORKDIR /app EXPOSE 8000 VOLUME /app/logs CMD /app/gunicorn.sh
  • 21. SIMPLE ROLLBACK ~ DOCKER STOP NEW_CONTAINER ~ DOCKER START OLD_CONTAINER 21
  • 22. IMAGE REUSE FROM IDEAL-PYTHON-ENVIRONMENT # SPECIFIC CODE 22
  • 23. EASY TO BUILD YOUR OWN PLATFORM 23 REASON #5
  • 24. WHY MAY YOU NEED PAAS? • A LOT OF PROJECTS • SERVICE-ORIENTED ARCHITECTURE • A LOT OF TESTING ENVIRONMENTS • CONTINUOUS DEPLOYMENT • SCALABILITY 24
  • 25. OPENSOURCE PAAS BUILT WITH DOCKER • DOKKU • DEIS • FLYNN • BUILD YOUR OWN 25
  • 26. DOCKER FORCES YOU TO THINK ABOUT SCALE 26 REASON #6
  • 27. THE TWELVE-FACTOR APP • DECLARATIVE FORMAT FOR SETUP AUTOMATION • CLEAN CONTRACT WITH UNDERLYING OS • SUITABLE FOR DEPLOYMENT ON MODERN CLOUD PLATFORMS • MINIMIZE DIVERGENCE BETWEEN DEV AND PROD • CAN SCALE UP WITHOUT SIGNIFICANT CHANGES TO TOOLING OR ARCHITECTURE http://12fact2o7 r.net
  • 28. 1. CODEBASE One codebase tracked in revision control, many deploys 28
  • 29. 2. DEPENDENCIES 29 Explicitly declare and isolate dependencies
  • 30. 3. CONFIG 30 Store config in the environment • SETTINGS_LOCAL.PY • ~ DOCKER RUN -D -E SMTP_SERVER_PASSWORD=12345 PROJECT/APP
  • 31. 4. BACKING SERVICES 31 Treat backing services as attached resources • DOCKER RUN -D —NAME=DB POSTGRES • DOCKER RUN -D —LINK DB:DB PROJECT/APP • MULTIHOST: HTTP://STACKOVERFLOW.COM/QUESTIONS/18285212/ HOW-TO-SCALE-DOCKER-CONTAINERS-IN-PRODUCTION
  • 32. 5. BUILD, CONFIG, RELEASE 32 Strictly separate build and run stages BUILD: DOCKER BUILD . CONFIG: DOCKER CREATE RELEASE: DOCKER START
  • 33. 6. PROCESSES Execute the app as one or more stateless processes 33 DOCKER CONTAINER STATELESS BY DEFAULT
  • 34. 7. PORT BINDING 34 Export services via port binding ~ DOCKER RUN -P 8000:80 PROJECT/APP
  • 35. 8. CONCURRENCY 35 Scale out via the process model
  • 36. 9. DISPOSABILITY Maximize robustness with fast startup and graceful shutdown 36 ~ DOCKER STOP CONTAINER_NAME ~ DOCKER START CONTAINER_NAME
  • 37. 10. DEV/PROD PARITY 37 Keep development, staging, and production as similar as possible SLIDE # 11
  • 38. 11. LOGS 38 Treat logs as event streams ~ DOCKER LOGS CONTAINER_NAME
  • 39. 12. ADMIN PROCESSES Run admin/management tasks as one-off processes 39 ~ DOCKER RUN PROJECT/APP /BIN/RUN_GUNICORN.SH ~ DOCKER RUN PROJECT/APP /BIN/RUN_CELERY.SH ~ DOCKER RUN PROJECT/APP PYTHON MANAGE.PY MIGRATE ~ DOCKER EXEC CONTAINER_NAME PYTHON MANAGE.PY ANYTHING
  • 40. DOCKER IS A NEW BUZZ WORD* 40 REASON #7 * in a good sense
  • 41. INTEREST GROWING March 2013 October 2014 41
  • 42. CRIU •FREEZE A RUNNING APPLICATION •CHECKPOINT IT TO A HARD DRIVE •RESTORE AND RUN THE APPLICATION 42
  • 43. CORE OS •NEW RE-ARCHITECTED LINIX DISTRIBUTION •MINIMAL RAM USAGE •APPLICATIONS RUN AS DOCKER CONTAINERS •DESIGNED FOR SCALE 43
  • 44. QUESTIONS, COMMENTS, THOUGHTS? TARAS LIAPUN @TLYAPUN TARASLYAPUN@GMAIL.COM 44