dockers zero to hero - (medium version)

85

Click here to load reader

Upload: nicolas-de-loof

Post on 12-Jul-2015

875 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker@ndeloof

Meet the Dockers

Page 2: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Page 3: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Page 4: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Page 5: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Page 6: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Why ?

Page 7: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

As  a  Developer

Page 8: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

I  code  using  …

Page 9: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

I  run  tests  on  …

Page 10: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

I  deploy  app  to  …

Page 11: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

and  (sometime)  it  fails  :’(

Page 12: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Page 13: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Some  told  me  to  …

Page 14: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker  Demo  of  a  VM

Page 15: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

OS kernel

File System (libs, …)

services Hypervisor

OS kernel

(virtual) File System

services application runtime (JDK)

application

data (memory / disk)

emulation

Page 16: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Page 17: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Page 18: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

OS kernel

File System (libs, …)

services Hypervisor

OS kernel

(virtual) File System

services application runtime (JDK)

application

data (memory / disk)

emulation

hardware virtualization

Page 19: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Page 20: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

 What’s  a  VM

Page 21: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

my App

rsyslogd

cron

/sbin/getty

/sbin/init

dhclient

sshd -D

Page 22: Dockers zero to hero - (medium version)

 Some0mes  worse

Page 23: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

 Why  do  we  need  VM  ?✓Different  Operating  System  ✓Different  CPU  Architecture  ✓Work  with  multiples  versions  ✓Move  application  to  a  different  server  

Page 24: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Docker  contract  :

Page 25: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker  Demo  of  a  simple  container

Page 26: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

OS kernel

File System (libs, …)

services

(virtual) File System

services application runtime (JDK)

application

data (memory / disk)

Hypervisor

OS kernel

emulation

Page 27: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Page 28: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Union file system

copy-on-write layers

Page 29: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

JDK

OS kernel

File System (libs, …)

docker -D base image

ruby

rails

data

app.js

data data

jar

node

Page 30: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

OS kernel

File System (libs, …)

docker -D base image

JDK

bar.jar

data data

ruby

railsfoo.jar

data

Page 31: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

OS kernel

File System (libs, …)

docker -D base image

JDK

app.jar

data data data

Page 32: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Infrastructure  as  Code

Page 33: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Dockerfile

•simple (simplistic?) DSL

•pure text file

•share it, pull-request it

•execution cache

Page 34: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #DockerDockerfile

Page 35: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #DockerWho will use it ?

Page 36: Dockers zero to hero - (medium version)

Developer

Page 37: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Not  on  Linux  ?

Page 38: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

DEV

✓Quickly get third party tools up-and-running

Page 39: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

DEV

✓Exact reproduction for target environment

Page 40: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

DEV

✓`docker build` to replace `mvn install`

Page 41: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

DEV

✓Reference environment

✓Bug reproduction scenario

Page 42: Dockers zero to hero - (medium version)

Tester

Page 43: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Test  resources

✓ Define build / test infra in your SCM

•Database

•Messaging Middleware

•…

Page 44: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Test

✓ Automate reproducible tests

Page 45: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #DockerJenkins  +  Docker

Page 46: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

✓ Quickly get low-cost iso-production environment

QA

Page 47: Dockers zero to hero - (medium version)

P.O.  /  Sales

Page 48: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Run  a  demo

✓ Ready to run demo

✓ No setup stress

✓ No technical skills required

✓ Can share with partners

Page 49: Dockers zero to hero - (medium version)

Production

Page 50: Dockers zero to hero - (medium version)

Dev/Opsa WAR archive is NOT what a sysadmin expect as delivery

+

Page 51: Dockers zero to hero - (medium version)

best  DevOps  tool  so  far  (imho)

Page 52: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Dev/Opsa WAR archive is NOT what a sysadmin expect as delivery

+

Page 53: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Page 54: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

best  DevOps  tool  so  far  (imho)

Page 55: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Separation  of  concern

Inside container /var/log/myapp

On host /mnt/backup/myapp/log

Page 56: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Separation  of  concerns

VOLUMEInside container /var/log/myapp

On host /mnt/backup/myapp/log

Page 57: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

✓ Manage hardware / infrastructure

✓ Monitoring / backups

- Not apps « implementation details »

Ops

Page 58: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

✓ Develop simplest possible solution

✓ Configuration is a runtime constraint

- Not extra-extra-flexibile application

new WebServer().start(8080);

Dev

Page 59: Dockers zero to hero - (medium version)

Continuous  Delivery

Page 60: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

from  SCM  to  production

Page 61: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Continuous  Delivery

Page 62: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Continuous  Delivery

•100% Reproducible environments

Dockerfile build WAR

from sources

Dockerfile run

acceptance

Dockerfile build

deployable

docker run | docker build -

Page 63: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker  build  chain

Page 64: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

What  for  ?

✓ Cloud

✓ devices

✓ on-premisesmore to come …

Page 65: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #DockerNew architectures

Page 66: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

 LightWeight  VM  ?

Page 67: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

1 process per container !

Page 68: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

OS kernel

File System (libs, …)

services (virtual) File System

services application runtime (JDK)

application

data (memory / disk)

Page 69: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

OS kernel

File System (libs, …)

services (virtual) File System

application runtime (JDK)

application

data (memory / disk)

vFS

runtime

service

data

Page 70: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

OS kernel

File System (libs, …)

services (virtual) File System

application runtime (JDK)

application

data (memory / disk)

vFS

runtime

service

data

Page 71: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

host

sample  :  syslog

http://jpetazzo.github.io/2014/08/24/syslog-docker/

rsyslog

/dev/log

/tmp/syslogdev

logger "hello"

/dev/log

Page 72: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Diviser  pour  mieux  régnerStop with monolithes !

Page 73: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Diviser  pour  mieux  régnerembrace Micro-services ‣ « the unix way »  ‣ domain focussed ‣ quick release cycles ‣ segregate resources

http://yobriefca.se/blog/2013/04/29/micro-service-architecture/

Page 74: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Micro-­‐service  avec  Docker

LINK

Page 75: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Time  to  LiveVirtual Machine : some months (years ?)

Container(s) : might just be few minutes

Page 76: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Docker  pattern:  Ambassador

webapp redis

ambassador ambassador

Page 77: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Docker  pattern:  service  discovery

webapp redis

skyDNSskyDock

--dns --dns

Page 78: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Docker  pattern:  Data  Container

postgres dbdata--volumes-from

postgres-2backup

-v /dbdata

Page 79: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Immutable  infrastructures

Page 80: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Upgrades

Upgrade applicatif = deploy a new image

Page 81: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

What  about  CM  ?

Page 82: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

pimp  my  Dockerfile

Dockerfile ONBUILD COPY /cookbooksONBUILD RUN chef-solo

Dockerfile FROM chef-solo

Page 83: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Orchestrate  Docker

load balancer

webapp

database replica

webapp

monitoring

cache- hosts: web sudo: yes tasks: - name: run tomcat servers docker: image=webapp ports=8080

Page 84: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Page 85: Dockers zero to hero - (medium version)

@ndeloof @dgageot#DV14 #Docker

Q?