SlideShare uma empresa Scribd logo
1 de 85
Baixar para ler offline
Meet the Dockers 
#DV14 #Doc@kenrdeloof @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot
Why ? 
#DV14 #Docker @ndeloof @dgageot
As 
a 
Developer 
#DV14 #Docker @ndeloof @dgageot
I 
code 
using 
… 
#DV14 #Docker @ndeloof @dgageot
I 
run 
tests 
on 
… 
#DV14 #Docker @ndeloof @dgageot
I 
deploy 
app 
to 
… 
#DV14 #Docker @ndeloof @dgageot
and 
(sometime) 
it 
fails 
:’( 
#DV14 #Docker @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot
Some 
told 
me 
to 
… 
#DV14 #Docker @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot 
Demo 
of 
a 
VM
data (memory / disk) 
application 
services application runtime (JDK) 
(virtual) File System 
OS kernel 
emulation 
services Hypervisor 
File System (libs, …) 
OS kernel 
#DV14 #Docker @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot
data (memory / disk) 
application 
services application runtime (JDK) 
(virtual) File System 
OS kernel 
emulation 
services Hypervisor 
File System (libs, …) 
OS kernel 
hardware 
virtualization 
#DV14 #Docker @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot
What’s 
a 
VM 
#DV14 #Docker @ndeloof @dgageot
/sbin/getty 
my App 
dhclient 
rsyslogd 
sshd -D 
cron 
/sbin/init 
#DV14 #Docker @ndeloof @dgageot
Some0mes 
worse
Why 
do 
we 
need 
VM 
? 
✓ Different 
Operating 
System 
✓ Different 
CPU 
Architecture 
✓Work 
with 
multiples 
versions 
✓Move 
application 
to 
a 
different 
server 
#DV14 #Docker @ndeloof @dgageot
Docker 
contract 
: 
#DV14 #Docker @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot 
Demo 
of 
a 
simple 
container
data (memory / disk) 
application 
services application runtime (JDK) 
(virtual) File System 
OS kernel 
Hypervisor 
File System (libs, …) 
OS kernel 
services 
emulation 
#DV14 #Docker @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot
Union file system 
copy-on-write 
layers 
#DV14 #Docker @ndeloof @dgageot
data data 
jar 
JDK 
app.js 
node 
docker -D base image 
File System (libs, …) 
OS kernel 
data 
rails 
ruby 
#DV14 #Docker @ndeloof @dgageot
data data 
data 
foo.jar rails 
JDK 
bar.jar 
docker -D base image 
File System (libs, …) 
OS kernel 
ruby 
#DV14 #Docker @ndeloof @dgageot
data data data 
app.jar 
JDK 
docker -D base image 
File System (libs, …) 
OS kernel 
#DV14 #Docker @ndeloof @dgageot
Infrastructure 
as 
Code 
#DV14 #Docker @ndeloof @dgageot
Dockerfile 
•simple (simplistic?) DSL 
•pure text file 
•share it, pull-request it 
•execution cache 
#DV14 #Docker @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot Dockerfile
#DV14 #Docker @ndeloof @dgageot Who will use it ?
Developer
Not 
on 
Linux 
? 
#DV14 #Docker @ndeloof @dgageot
DEV 
✓Quickly get third party 
tools up-and-running 
#DV14 #Docker @ndeloof @dgageot
DEV 
✓Exact reproduction for 
target environment 
#DV14 #Docker @ndeloof @dgageot
DEV 
✓`docker build` to replace 
`mvn install` 
#DV14 #Docker @ndeloof @dgageot
DEV 
✓Reference environment 
✓Bug reproduction scenario 
#DV14 #Docker @ndeloof @dgageot
Tester
Test 
resources 
✓ Define build / test infra in your SCM 
•Database 
•Messaging Middleware 
•… 
#DV14 #Docker @ndeloof @dgageot
Test 
✓ Automate reproducible tests 
#DV14 #Docker @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot Jenkins 
+ 
Docker
QA 
✓ Quickly get low-cost iso-production environment 
#DV14 #Docker @ndeloof @dgageot
P.O. 
/ 
Sales
Run 
a 
demo 
✓ Ready to run demo 
✓ No setup stress 
✓ No technical skills required 
✓ Can share with partners 
#DV14 #Docker @ndeloof @dgageot
Production
Dev/Ops 
a WAR archive is NOT what a sysadmin expect as delivery 
+
best 
DevOps 
tool 
so 
far 
(imho)
Dev/Ops 
a WAR archive is NOT what a sysadmin expect as delivery 
+ 
#DV14 #Docker @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot
best 
DevOps 
tool 
so 
far 
(imho) 
#DV14 #Docker @ndeloof @dgageot
Separation 
of 
concern 
Inside container 
/var/log/myapp 
On host 
/mnt/backup/myapp/log 
#DV14 #Docker @ndeloof @dgageot
Separation 
of 
concerns 
Inside container 
VOLUME /var/log/myapp 
On host 
/mnt/backup/myapp/log 
#DV14 #Docker @ndeloof @dgageot
Ops 
✓ Manage hardware / infrastructure 
✓ Monitoring / backups 
- Not apps « implementation details » 
#DV14 #Docker @ndeloof @dgageot
Dev 
✓ Develop simplest possible solution 
✓ Configuration is a runtime constraint 
- Not extra-extra-flexibile application 
new WebServer().start(8080); 
#DV14 #Docker @ndeloof @dgageot
Continuous 
Delivery
from 
SCM 
to 
production 
#DV14 #Docker @ndeloof @dgageot
Continuous 
Delivery 
#DV14 #Docker @ndeloof @dgageot
Continuous 
Delivery 
•100% Reproducible environments 
Dockerfile 
build WAR 
from sources 
Dockerfile 
run 
acceptance 
Dockerfile 
build 
deployable 
docker run | docker build - 
#DV14 #Docker @ndeloof @dgageot
build 
chain 
#DV14 #Docker @ndeloof @dgageot
What 
for 
? 
✓ Cloud 
✓ devices 
✓ on-premises 
more to come … 
#DV14 #Docker @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot New architectures
LightWeight 
VM 
? 
#DV14 #Docker @ndeloof @dgageot
1 process per container ! 
#DV14 #Docker @ndeloof @dgageot
data (memory / disk) 
application 
services application runtime (JDK) 
services (virtual) File System 
File System (libs, …) 
OS kernel 
#DV14 #Docker @ndeloof @dgageot
data (memory / disk) 
application 
application runtime (JDK) 
data 
service 
runtime 
services (virtual) File System 
File System (libs, …) 
OS kernel 
vFS 
#DV14 #Docker @ndeloof @dgageot
data (memory / disk) 
application 
application runtime (JDK) 
data 
service 
runtime 
services (virtual) File System 
File System (libs, …) 
OS kernel 
vFS 
#DV14 #Docker @ndeloof @dgageot
sample 
: 
syslog 
host 
rsyslog 
/dev/log 
/tmp/syslogdev 
logger "hello" 
/dev/log 
http://jpetazzo.github.io/2014/08/24/syslog-docker/ 
#DV14 #Docker @ndeloof @dgageot
Diviser 
pour 
mieux 
régner 
Stop with monolithes ! 
#DV14 #Docker @ndeloof @dgageot
Diviser 
pour 
mieux 
régner 
embrace Micro-services 
‣ « the unix way » 
‣ domain focussed 
‣ quick release cycles 
‣ segregate resources 
http://yobriefca.se/blog/2013/04/29/micro-service-architecture/ 
#DV14 #Docker @ndeloof @dgageot
Micro-­‐service 
avec 
Docker 
LINK 
#DV14 #Docker @ndeloof @dgageot
Time 
to 
Live 
Virtual Machine : 
some months (years ?) 
Container(s) : 
might just be few minutes 
#DV14 #Docker @ndeloof @dgageot
Docker 
pattern: 
Ambassador 
webapp redis 
ambassador ambassador 
#DV14 #Docker @ndeloof @dgageot
Docker 
pattern: 
service 
discovery 
webapp redis 
--dns --dns 
skyDNS 
skyDock 
#DV14 #Docker @ndeloof @dgageot
Docker 
pattern: 
Data 
Container 
postgres dbdata 
--volumes-from 
postgres-2 
-v /dbdata 
backup 
#DV14 #Docker @ndeloof @dgageot
Immutable 
infrastructures 
#DV14 #Docker @ndeloof @dgageot
Upgrades 
Upgrade applicatif = deploy a new image 
#DV14 #Docker @ndeloof @dgageot
What 
about 
CM 
? 
#DV14 #Docker @ndeloof @dgageot
pimp 
my 
Dockerfile 
Dockerfile 
ONBUILD COPY /cookbooks 
ONBUILD RUN chef-solo 
Dockerfile 
FROM chef-solo 
#DV14 #Docker @ndeloof @dgageot
Orchestrate 
Docker 
load balancer 
- hosts: web webapp 
webapp 
cache 
monitoring 
database replica 
sudo: yes 
tasks: 
- name: run tomcat servers 
docker: image=webapp ports=8080 
#DV14 #Docker @ndeloof @dgageot
#DV14 #Docker @ndeloof @dgageot
Q? 
#DV14 #Docker @ndeloof @dgageot

Mais conteúdo relacionado

Mais procurados

Redis As Job Cache In An Auto-Scaling Distributed Video Rendering Pipeline: P...
Redis As Job Cache In An Auto-Scaling Distributed Video Rendering Pipeline: P...Redis As Job Cache In An Auto-Scaling Distributed Video Rendering Pipeline: P...
Redis As Job Cache In An Auto-Scaling Distributed Video Rendering Pipeline: P...
Redis Labs
 

Mais procurados (19)

Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
 
Redis As Job Cache In An Auto-Scaling Distributed Video Rendering Pipeline: P...
Redis As Job Cache In An Auto-Scaling Distributed Video Rendering Pipeline: P...Redis As Job Cache In An Auto-Scaling Distributed Video Rendering Pipeline: P...
Redis As Job Cache In An Auto-Scaling Distributed Video Rendering Pipeline: P...
 
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special EditionIntroduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
 
DevOps meetup 16oct docker and jenkins
DevOps meetup 16oct docker and jenkinsDevOps meetup 16oct docker and jenkins
DevOps meetup 16oct docker and jenkins
 
手把手帶你學Docker 03042017
手把手帶你學Docker 03042017手把手帶你學Docker 03042017
手把手帶你學Docker 03042017
 
Nagios Conference 2012 - Nathan Vonnahme - Writing Custom Nagios Plugins in Perl
Nagios Conference 2012 - Nathan Vonnahme - Writing Custom Nagios Plugins in PerlNagios Conference 2012 - Nathan Vonnahme - Writing Custom Nagios Plugins in Perl
Nagios Conference 2012 - Nathan Vonnahme - Writing Custom Nagios Plugins in Perl
 
Redis as Job Cache in an Auto-Scaling Video Rendering Pipeline
Redis as Job Cache in an Auto-Scaling Video Rendering PipelineRedis as Job Cache in an Auto-Scaling Video Rendering Pipeline
Redis as Job Cache in an Auto-Scaling Video Rendering Pipeline
 
Are your v8 garbage collection logs speaking to you?Joyee Cheung -Alibaba Clo...
Are your v8 garbage collection logs speaking to you?Joyee Cheung -Alibaba Clo...Are your v8 garbage collection logs speaking to you?Joyee Cheung -Alibaba Clo...
Are your v8 garbage collection logs speaking to you?Joyee Cheung -Alibaba Clo...
 
What's new in FreeBSD 10
What's new in FreeBSD 10What's new in FreeBSD 10
What's new in FreeBSD 10
 
Docker 활용법: dumpdocker
Docker 활용법: dumpdockerDocker 활용법: dumpdocker
Docker 활용법: dumpdocker
 
DCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best PracticesDCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best Practices
 
A Hands-on Introduction to Docker
A Hands-on Introduction to DockerA Hands-on Introduction to Docker
A Hands-on Introduction to Docker
 
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
 
Docker at DevTable
Docker at DevTableDocker at DevTable
Docker at DevTable
 
Kubernetes Scheduler deep dive
Kubernetes Scheduler deep diveKubernetes Scheduler deep dive
Kubernetes Scheduler deep dive
 
PuppetConf 2016: Running Puppet Software in Docker Containers – Gareth Rushgr...
PuppetConf 2016: Running Puppet Software in Docker Containers – Gareth Rushgr...PuppetConf 2016: Running Puppet Software in Docker Containers – Gareth Rushgr...
PuppetConf 2016: Running Puppet Software in Docker Containers – Gareth Rushgr...
 
Native development kit (ndk) introduction
Native development kit (ndk)  introductionNative development kit (ndk)  introduction
Native development kit (ndk) introduction
 
The Lies We Tell Our Code (#seascale 2015 04-22)
The Lies We Tell Our Code (#seascale 2015 04-22)The Lies We Tell Our Code (#seascale 2015 04-22)
The Lies We Tell Our Code (#seascale 2015 04-22)
 
Java applications containerized and deployed
Java applications containerized and deployedJava applications containerized and deployed
Java applications containerized and deployed
 

Destaque

Rabbit mq messaginginthecloud_v_mworld_2010_ms
Rabbit mq messaginginthecloud_v_mworld_2010_msRabbit mq messaginginthecloud_v_mworld_2010_ms
Rabbit mq messaginginthecloud_v_mworld_2010_ms
Rabbit MQ
 
Docker Deployments
Docker DeploymentsDocker Deployments
Docker Deployments
Docker, Inc.
 

Destaque (20)

Easy applications deployment on OpenStack clouds
Easy applications deployment on OpenStack cloudsEasy applications deployment on OpenStack clouds
Easy applications deployment on OpenStack clouds
 
From zero to Docker
From zero to DockerFrom zero to Docker
From zero to Docker
 
Docker, From zero to hero
Docker, From zero to heroDocker, From zero to hero
Docker, From zero to hero
 
Docker zero
Docker zeroDocker zero
Docker zero
 
Docker: from zero to nonzero
Docker: from zero to nonzeroDocker: from zero to nonzero
Docker: from zero to nonzero
 
Rabbit mq messaginginthecloud_v_mworld_2010_ms
Rabbit mq messaginginthecloud_v_mworld_2010_msRabbit mq messaginginthecloud_v_mworld_2010_ms
Rabbit mq messaginginthecloud_v_mworld_2010_ms
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
From Zero to Hero - Nexinto
From Zero to Hero - NexintoFrom Zero to Hero - Nexinto
From Zero to Hero - Nexinto
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Docker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutesDocker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutes
 
Introduction To Docker
Introduction To DockerIntroduction To Docker
Introduction To Docker
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
From zero to hero with Docker
From zero to hero with DockerFrom zero to hero with Docker
From zero to hero with Docker
 
Zero downtime-java-deployments-with-docker-and-kubernetes
Zero downtime-java-deployments-with-docker-and-kubernetesZero downtime-java-deployments-with-docker-and-kubernetes
Zero downtime-java-deployments-with-docker-and-kubernetes
 
The DevOps Hero Toolkit: Nexus, Jenkins and Docker
The DevOps Hero Toolkit: Nexus, Jenkins and DockerThe DevOps Hero Toolkit: Nexus, Jenkins and Docker
The DevOps Hero Toolkit: Nexus, Jenkins and Docker
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
NetflixOSS and ZeroToDocker Talk
NetflixOSS and ZeroToDocker TalkNetflixOSS and ZeroToDocker Talk
NetflixOSS and ZeroToDocker Talk
 
Infinit: Modern Storage Platform for Container Environments
Infinit: Modern Storage Platform for Container EnvironmentsInfinit: Modern Storage Platform for Container Environments
Infinit: Modern Storage Platform for Container Environments
 
Docker Deployments
Docker DeploymentsDocker Deployments
Docker Deployments
 
Docker: the road ahead
Docker: the road aheadDocker: the road ahead
Docker: the road ahead
 

Semelhante a Dockers zero to hero - (medium version)

Introduction to Docker and Linux Containers @ Cloud Computing Rhein Main
Introduction to Docker and Linux Containers @ Cloud Computing Rhein MainIntroduction to Docker and Linux Containers @ Cloud Computing Rhein Main
Introduction to Docker and Linux Containers @ Cloud Computing Rhein Main
Puja Abbassi
 

Semelhante a Dockers zero to hero - (medium version) (20)

FEI Bratislava 2017 - Docker
FEI Bratislava 2017 - DockerFEI Bratislava 2017 - Docker
FEI Bratislava 2017 - Docker
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
DevOps MeetUp NL - Docker (Oct 2014)
DevOps MeetUp NL - Docker (Oct 2014)DevOps MeetUp NL - Docker (Oct 2014)
DevOps MeetUp NL - Docker (Oct 2014)
 
Docker for Fun and Profit, Devoxx 2014
Docker for Fun and Profit, Devoxx 2014Docker for Fun and Profit, Devoxx 2014
Docker for Fun and Profit, Devoxx 2014
 
Joomla Continuous Delivery with Docker
Joomla Continuous Delivery with DockerJoomla Continuous Delivery with Docker
Joomla Continuous Delivery with Docker
 
Docker @ FOSS4G 2016, Bonn
Docker @ FOSS4G 2016, BonnDocker @ FOSS4G 2016, Bonn
Docker @ FOSS4G 2016, Bonn
 
Accelerate your development with Docker
Accelerate your development with DockerAccelerate your development with Docker
Accelerate your development with Docker
 
Accelerate your software development with Docker
Accelerate your software development with DockerAccelerate your software development with Docker
Accelerate your software development with Docker
 
Introducing resinOS: An Operating System Tailored for Containers and Built fo...
Introducing resinOS: An Operating System Tailored for Containers and Built fo...Introducing resinOS: An Operating System Tailored for Containers and Built fo...
Introducing resinOS: An Operating System Tailored for Containers and Built fo...
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014
 
DevAssistant, Docker and You
DevAssistant, Docker and YouDevAssistant, Docker and You
DevAssistant, Docker and You
 
mesos-devoxx14
mesos-devoxx14mesos-devoxx14
mesos-devoxx14
 
Docker experience @inbotapp
Docker experience @inbotappDocker experience @inbotapp
Docker experience @inbotapp
 
Docker module 1
Docker module 1Docker module 1
Docker module 1
 
The world of Docker and Kubernetes
The world of Docker and Kubernetes The world of Docker and Kubernetes
The world of Docker and Kubernetes
 
Docker 導入:障礙與對策
Docker 導入:障礙與對策Docker 導入:障礙與對策
Docker 導入:障礙與對策
 
Introduction to Docker and Linux Containers @ Cloud Computing Rhein Main
Introduction to Docker and Linux Containers @ Cloud Computing Rhein MainIntroduction to Docker and Linux Containers @ Cloud Computing Rhein Main
Introduction to Docker and Linux Containers @ Cloud Computing Rhein Main
 
Docker and the Container Revolution
Docker and the Container RevolutionDocker and the Container Revolution
Docker and the Container Revolution
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Core os dna_oscon
Core os dna_osconCore os dna_oscon
Core os dna_oscon
 

Mais de Nicolas De Loof

Opening opensource : The Jenkins Way
Opening opensource : The Jenkins WayOpening opensource : The Jenkins Way
Opening opensource : The Jenkins Way
Nicolas De Loof
 

Mais de Nicolas De Loof (19)

Quand Internet sera gouvernée par les |chats> de Shrödinger
Quand Internet sera gouvernée par les |chats> de ShrödingerQuand Internet sera gouvernée par les |chats> de Shrödinger
Quand Internet sera gouvernée par les |chats> de Shrödinger
 
Quand Internet sera gouvernée par les |chats> de Shrödinger
Quand Internet sera gouvernée par les |chats> de ShrödingerQuand Internet sera gouvernée par les |chats> de Shrödinger
Quand Internet sera gouvernée par les |chats> de Shrödinger
 
Breaking the RpiDocker challenge
Breaking the RpiDocker challenge Breaking the RpiDocker challenge
Breaking the RpiDocker challenge
 
( jenkins, docker ) -> { Continuous Delivery }
( jenkins, docker ) -> { Continuous Delivery }( jenkins, docker ) -> { Continuous Delivery }
( jenkins, docker ) -> { Continuous Delivery }
 
Docker slaves
Docker slavesDocker slaves
Docker slaves
 
Orchestrate Continuous Delivery with Jenkins and Docker
Orchestrate Continuous Delivery with Jenkins and DockerOrchestrate Continuous Delivery with Jenkins and Docker
Orchestrate Continuous Delivery with Jenkins and Docker
 
Développer en Java et en Caleçon
Développer en Java et en CaleçonDévelopper en Java et en Caleçon
Développer en Java et en Caleçon
 
Docker bdxio
Docker bdxioDocker bdxio
Docker bdxio
 
Dockers zero to hero
Dockers zero to heroDockers zero to hero
Dockers zero to hero
 
Likebox - votre avis nous intéresse
Likebox - votre avis nous intéresseLikebox - votre avis nous intéresse
Likebox - votre avis nous intéresse
 
La révolution Docker
La révolution DockerLa révolution Docker
La révolution Docker
 
Cloud patterns - softshake 2013
Cloud patterns - softshake 2013Cloud patterns - softshake 2013
Cloud patterns - softshake 2013
 
Cloud patterns
Cloud patternsCloud patterns
Cloud patterns
 
Objectif cloud
Objectif cloudObjectif cloud
Objectif cloud
 
Doing Business with OpenSource - a short (unofficial) CloudBees story
Doing Business with OpenSource - a short (unofficial) CloudBees storyDoing Business with OpenSource - a short (unofficial) CloudBees story
Doing Business with OpenSource - a short (unofficial) CloudBees story
 
Ma forge++ : @Cloud
Ma forge++ : @CloudMa forge++ : @Cloud
Ma forge++ : @Cloud
 
Javavs net
Javavs netJavavs net
Javavs net
 
Opening opensource : The Jenkins Way
Opening opensource : The Jenkins WayOpening opensource : The Jenkins Way
Opening opensource : The Jenkins Way
 
Jenkins user meetup @paris
Jenkins user meetup @parisJenkins user meetup @paris
Jenkins user meetup @paris
 

Dockers zero to hero - (medium version)