Slide 1

Slide 1 text

Get used to it !

Slide 2

Slide 2 text

Julien Vey @julienvey

Slide 3

Slide 3 text

Pierre Padrixe @undefd

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

What is Docker ?

Slide 6

Slide 6 text

What is Docker ?

Slide 7

Slide 7 text

When can I use Docker ?

Slide 8

Slide 8 text

Sandbox

Slide 9

Slide 9 text

$ ./install-XXX.sh !

Slide 10

Slide 10 text

$ ./install-XXX.sh Error during install ! …

Slide 11

Slide 11 text

$ ./install-XXX.sh Error during install ! … $ ./uninstall-XXX.sh !

Slide 12

Slide 12 text

$ ./install-XXX.sh Error during install ! … $ ./uninstall-XXX.sh Could not remove file xxx !

Slide 13

Slide 13 text

$ ./install-XXX.sh Error during install ! … $ ./uninstall-XXX.sh Could not remove file xxx ! ! FAIL !

Slide 14

Slide 14 text

Please Docker, help me !

Slide 15

Slide 15 text

$ docker run $ ./install-XXX.sh Error during install !

Slide 16

Slide 16 text

$ docker run $ ./install-XXX.sh Error during install ! Try Again !

Slide 17

Slide 17 text

$ docker run $ ./install-XXX.sh Error during install ! Try Again ! $ docker run $ echo "Some conf" > XXX.cfg $ ./install-XXX.sh Success !

Slide 18

Slide 18 text

Repeatability

Slide 19

Slide 19 text

$ ./myscript.sh !

Slide 20

Slide 20 text

$ ./myscript.sh $ ./myotherscript.sh !

Slide 21

Slide 21 text

$ ./myscript.sh $ ./myotherscript.sh $ rm -rf myscriptdir !

Slide 22

Slide 22 text

$ ./myscript.sh $ ./myotherscript.sh $ rm -rf myscriptdir ! OOPS !

Slide 23

Slide 23 text

Please Docker, help me !

Slide 24

Slide 24 text

RUN ./myscript.sh

Slide 25

Slide 25 text

RUN ./myscript.sh RUN ./myotherscript.sh

Slide 26

Slide 26 text

RUN ./myscript.sh RUN rm -rf myscriptdir RUN ./myotherscript.sh

Slide 27

Slide 27 text

RUN ./myscript.sh RUN rm -rf myscriptdir RUN ./myotherscript.sh OOPS ?

Slide 28

Slide 28 text

RUN ./myscript.sh RUN rm -rf myscriptdir RUN ./myotherscript.sh $ docker commit $id me/snap $ docker commit $id me/snap $ docker run me/snap

Slide 29

Slide 29 text

Setup your Development environment

Slide 30

Slide 30 text

A development Environment Today

Slide 31

Slide 31 text

Tomcat Vert.x NodeJS Apache PHP Mongo

Slide 32

Slide 32 text

$ install $ install $ install $ install $ install $ install Tomcat Vert.x NodeJS Apache PHP Mongo

Slide 33

Slide 33 text

Tomcat Vert.x NodeJS Apache PHP Mongo $ configure $ configure $ configure $ configure $ configure $ configure

Slide 34

Slide 34 text

Do this for each Developer $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure $ configure

Slide 35

Slide 35 text

Too Many Steps !

Slide 36

Slide 36 text

Please Docker, help me !

Slide 37

Slide 37 text

Tomcat Vert.x NodeJS Apache PHP Mongo $ configure $ configure $ configure $ configure $ configure $ configure Configure a Container Once

Slide 38

Slide 38 text

just run it for each developer $ docker run $ configure $ configure $ configure $ configure $ configure $ configure $ docker run $ configure $ configure $ configure $ configure $ configure $ configure $ docker run $ configure $ configure $ configure $ configure $ configure $ configure

Slide 39

Slide 39 text

On any (Linux) environment $ docker run $ configure $ configure $ configure $ configure $ configure $ configure $ docker run $ configure $ configure $ configure $ configure $ configure $ configure $ docker run $ configure $ configure $ configure $ configure $ configure $ configure

Slide 40

Slide 40 text

Or split by services $ docker run NodeJS $ configure Apache $ configure $ docker run MongoDB $ configure $ docker run

Slide 41

Slide 41 text

Or split by services $ docker run NodeJS $ configure Apache $ configure $ docker run MongoDB $ configure $ docker run and run ONLY what you need

Slide 42

Slide 42 text

PaaS Platform-as-a-Service

Slide 43

Slide 43 text

a PaaS deploys your application

Slide 44

Slide 44 text

your application needs Isolation

Slide 45

Slide 45 text

your application needs Fast Startup Time

Slide 46

Slide 46 text

Lucky you !

Slide 47

Slide 47 text

Docker is isolated

Slide 48

Slide 48 text

Docker is Fast

Slide 49

Slide 49 text

PaaS Providers already use Containers

Slide 50

Slide 50 text

OpenShift Heroku Docker INC use LXC

Slide 51

Slide 51 text

Flynn Deis Dokku are built with Docker

Slide 52

Slide 52 text

Isolation VS Performance

Slide 53

Slide 53 text

Sometimes, a Virtual Machine is Not Enough

Slide 54

Slide 54 text

You need Bare Metal Performance

Slide 55

Slide 55 text

You need Bare Metal Performance

Slide 56

Slide 56 text

But you Don’t want This Bare Metal Server

Slide 57

Slide 57 text

You’d Prefer have This Bare Metal Server

Slide 58

Slide 58 text

By Isolating your Apps in Containers, ! You provide Isolation without giving up Performance

Slide 59

Slide 59 text

Continuous Deployment

Slide 60

Slide 60 text

Deliver Code Test Deploy

Slide 61

Slide 61 text

Deliver Code Test Deploy to Integration Deploy to Staging Deploy to Production

Slide 62

Slide 62 text

Deliver Code Test Deploy to Integration Deploy to Staging Deploy to Production Install environment Configure Migration scripts Deploy deliverable Install environment Configure Migration scripts Deploy deliverable Install environment Configure Migration scripts Deploy deliverable

Slide 63

Slide 63 text

We have to change the Delivery Unit

Slide 64

Slide 64 text

Deliver a container

Slide 65

Slide 65 text

Deliver a container Install environment Configure Migration scripts Deploy deliverable

Slide 66

Slide 66 text

Deliver a container Test Deploy to Integration Deploy to Staging Deploy to Production

Slide 67

Slide 67 text

Deliver a container Test Deploy to Integration Deploy to Staging Deploy to Production $ docker run $ docker run $ docker run Install environment Configure Migration scripts Deploy deliverable Install environment Configure Migration scripts Deploy deliverable Install environment Configure Migration scripts Deploy deliverable

Slide 68

Slide 68 text

The Container is the new Delivery Unit

Slide 69

Slide 69 text

Demo Time !

Slide 70

Slide 70 text

User $git push triggers build - build project - build container deploys and run container

Slide 71

Slide 71 text

User $git push triggers build - build project - build container deploys and run container Everything is a container

Slide 72

Slide 72 text

in order to build the container $docker build github.com/jpetazzo/dind

Slide 73

Slide 73 text

What Else ?

Slide 74

Slide 74 text

User $git push triggers build with Promoted Builds Plugin promote to staging promote to integration promote to production

Slide 75

Slide 75 text

$ docker run base echo Questions?

Slide 76

Slide 76 text

Thanks