Docker :
Pets vs Cattle

Damien DUPORTAL

Au programme :

Des chats

Un chat c'est mignon

Chat Potte

Mais ça peut coûter cher

Chat Vétérinaire

Et grossir très (trop ?) vite

Gros chat

Des vaches

Les vaches c'est moins mignon...

Vache pas mignonne

Mais c'est plus pratique

Vache lait

On peut les rentabiliser

Vache lait

Mais il faut apprendre à gérer le troupeau

Paysan

Des baleines

Oui, les "baleines" ?

Docker

Pets vs. Cattle

Pets vs. Cattle

Métaphore pour illustrer la capacité de mise à l'échelle de votre plateforme :

Pets vs Cattle

Pets vs Cattle

Et Docker ?

Ce qu'apporte Docker 1/3

Eliminate Matrix From Hell

Ce qu'apporte Docker 2/3

Containeur vs VMs

Ce qu'apporte Docker 3/3

Eliminate Matrix From Hell

Modèle du troupeau

Un processus par containeur Docker Shipping

Donc "Docker + chats" =

Groupe de chats

Oui mais !

Pourquoi ?

Supervisor

Utilisez le bon outil pour votre contexte !

The right tool

Place à la pratique !

Soit une application Wordpress

Basic LAMP App

Dockerfile (App V1)

FROM tutum/lamp
MAINTAINER damien.duportal@gmail.com

ADD ./my-wordpress-app /app

EXPOSE 80 3306
CMD ['/run.sh']

Docker run (App V1)

$ docker build -t my-wp-app .
Step 0
...

$ docker run -p 80:80 my-wp-app
e565fbbc6033e565fbbc6033

Un chat et une vache !

WP et MySQL

Dockerfile 1 (App V2)

FROM my-apache-php
MAINTAINER damien.duportal@gmail.com

ADD ./my-wordpress-app /app

EXPOSE 80
CMD ["/usr/sbin/apache2","-D","FOREGROUND"]

Dockerfile 2 (App V2)

FROM my-mysql
MAINTAINER damien.duportal@gmail.com

ADD monscript.sql /app/
RUN mysql < /app/monscript.sql

EXPOSE 3306
CMD ["/usr/bin/mysqld_safe""]

Docker run (App V2)

$ docker build -t my-wp-app ./dockerfile1/
...
$ docker build -t mysql ./dockerfile2/
...
$ docker run --name mysql mysql
e565fbbc6033e565fbbc6033
$ docker run --link mysql:db -p 80:80 my-wp-app
3994fc1486923994fc148692

Des troupeaux de vaches

WP et MySQL
Et un chat de berger !

Grâce à Docker :

Conséquences :

Votre application est-elle "12 factors" ?

Merci ! Des questions ?

Quelques ressources pratiques :