SlideShare une entreprise Scribd logo
Docker Tours Meetup #1
9 Septembre 2015 @ Cantine numérique
@DockerTours
Programme
Introduction à Docker & cas pratique
par Antoine Boudot et Thibaut Marmin (~3x20mn)
Du dev à la prod en passant par Jenkins
par Benjamin Cousin et Cédric Gatay (~30mn)
Pizzas / Bières
offertes par le groupe Cyrès
À propos...
Thibaut Marmin
@thibmarmin
Ing. Développeur chez Ingensi
Elasticsearch / Docker / AngularJS
Organisateur Docker Tours Meetup
Antoine Boudot
@AntoineBoudot
Ing. Développeur chez Ingensi
Ansible / Docker / Hadoop
Co-organisateur Docker Tours Meetup
Introduction à Docker
Rapide, promis
Qui devrait s’y intéresser ?
Devs
tous les langages
tous les OS
projet cible linux
Ops
la plupart des distributions
Linux1
et cloud providers
toutes les machines
(physiques / VMs)
1
https://docs.docker.com/installation/
plus rapide
plus agile
= bénéfices !
Pourquoi Docker est-il si populaire ?
Pourquoi Docker est-il si populaire ?
La solution : les containers !
VM
Container
Docker
▸ build
▸ ship
▸ run
Né le 13 mars 20131
nov. 2013 : 7300 stars, 900 forks, 200
contributeurs
jan. 2014 : levée de $15.000.000
mai 2014 : 11700 stars, 1900 forks, 400
contributeurs
sept. 2014 : levée de $40.000.000
avr. 2015 : levée de $95.000.000
avr. 2015 : 20700 stars, 4700 forks, 900
contributeurs
1
depuis un projet dotCloud
L’architecture Docker
Les images
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
training/webapp latest fc77f57ad303 3 weeks ago 280.5 MB
ubuntu 13.10 5e019ab7bf6d 4 weeks ago 180 MB
ubuntu saucy 5e019ab7bf6d 4 weeks ago 180 MB
ubuntu 12.04 74fe38d11401 4 weeks ago 209.6 MB
ubuntu precise 74fe38d11401 4 weeks ago 209.6 MB
ubuntu 12.10 a7cf8ae4e998 4 weeks ago 171.3 MB
ubuntu quantal a7cf8ae4e998 4 weeks ago 171.3 MB
ubuntu 14.04 99ec81b80c55 4 weeks ago 266 MB
ubuntu latest 99ec81b80c55 4 weeks ago 266 MB
ubuntu trusty 99ec81b80c55 4 weeks ago 266 MB
ubuntu 13.04 316b678ddf48 4 weeks ago 169.4 MB
ubuntu raring 316b678ddf48 4 weeks ago 169.4 MB
ubuntu 10.04 3db9c44f4520 4 weeks ago 183 MB
ubuntu lucid 3db9c44f4520 4 weeks ago 183 MB
$
Trouver une image
Trouver une image
$docker search centos
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/centos The offic... 1232 [OK]
docker.io docker.io/ansible/centos7... Ansible o... 51 [OK]
docker.io docker.io/jdeathe/centos-... CentOS-6 ... 11 [OK]
docker.io docker.io/blalor/centos Bare-bone... 9 [OK]
docker.io docker.io/jdeathe/centos-ssh CentOS-6 ... 6 [OK]
docker.io docker.io/openshift/wildf... DEPRECATE... 6 [OK]
docker.io docker.io/torusware/speed... Always up... 6 [OK]
docker.io docker.io/million12/cento... Base Cent... 5 [OK]
docker.io docker.io/nimmis/java-cen... This is d... 4 [OK]
docker.io docker.io/jdeathe/centos-... CentOS-6 ... 2 [OK]
. . .
$
Récupérer une image
$ docker pull centos
Pulling repository centos
b7de3133ff98: Pulling dependent layers
5cc9e91966f7: Pulling fs layer
511136ea3c5a: Download complete
ef52fb1fe610: Download complete
. . .
Status: Downloaded newer image for centos
$
Les containers
1 processus=1 container
Mode interactif
$ docker run -it centos /bin/bash
[root@af40a9d95e82 /]#
-t Allocate a pseudo-tty
-i Interactive mode (STDIN)
. . .
Mode background
$ docker run -d --name hello centos /bin/bash -c 
"while true; do echo Hello world; sleep 1; done"
ce7383fd92b9e15c9c96fa58bb99fe62fba4dee50c566abd5807804ef4f3110d
$
-d Daemon mode (background)
--name Specify container name
. . .
Mode background
$ docker logs -f hello
hello
hello
hello
hello
hello
hello
hello
hello
Lister les containers
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f9148ffb024e centos:latest "/bin/bash -c 'while 9 seconds ago Up 8 seconds hello
e2ccef3bcc5a elasticsearch:latest "/docker-entrypoint. 5 weeks ago Up 2 seconds 9200... elastic
$
Contrôller les containers
$ JOB=$(docker run -d [...]) # Start a new container
$ docker stop $JOB # Stop the container
$ docker start $JOB # Start the container
$ docker restart $JOB # Restart the container
$ docker kill $JOB # SIGKILL a container
$ docker rm $JOB # Remove a container
Créer une image
$ docker commit -m "Say Hello" -a "Kate Smith" 0b2616b0e5a8 user/centos:v2
4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c
$ docker build -t user/centos:v2 .
pull -> commit
build
Depuis une image existante, après avoir exécuté des commandes
Depuis un Dockerfile, basé sur une image existante
$ cat helloFromScratch.tgz | docker import - hello:new
import
From scratch
Mais encore...
Binding de ports
(expose / publish)
Points de montage
(volume)
Connecter les containers
(link)
Variables d’environnement
. . .
Docker en Développement
Cas pratique
Notre contexte
REST
API
DB
→→
Structure technique
Dropwizard
:9300
:8080
:8081
:9200
$ java -jar [JAR] server [CONF]
{ “_id”: ...
{ “_id”: ...
{ “_id”: ...
{ “_id”: ...
{ “_id”: ...
{ “_id”: ...
Structure fonctionnelle
Dropwizard
:8080
:8081
GET /api # infos serveur
GET /api/contact # liste des contacts
GET /api/contact/:id # get d'un contact
GET /healthcheck
Sans docker
Dropwizard
{ “_id”: ...
{ “_id”: ...
{ “_id”: ...
{ “_id”: ...
{ “_id”: ...
{ “_id”: ...
Télécharger elasticsearch
Installer et configurer
(Gérer les dépendances)
(Installer les dépendances)
Configurer l’app en localhost
localhost:9300
Avec docker
Application Elasticsearch
Comment faire ?
LINK
Application Elasticsearch
VOLUME
/home/.../workdir
application.jar
config.yml
PORT
elasticsearch
/workdir
8080
8081
8080
8081
REGISTRY
Docker en production
Cas pratique
Différences entre dev et prod
Application Configurations
LogsPersistance des données
IMAGE
Le Dockerfile
Automatiser la création d’une image
Rapide
Reproductible
Maintenable
Dockerfile
FROM BaseImage:version
MAINTAINER DockerMeetup DockerMeetup.com "Docker@Meetup.com"
ENV myvar=”value”
RUN yum install pkgs1 , pkgs2 -y
RUN mkdir -p /workdir/log
COPY ./conf/application.conf /workdir/app.conf
ADD www.archive.com/myarchive.tar.gz /workdir/
EXPOSE 9000
VOLUME [“/workdir/log”]
WORKDIR [“/workdir”]
USER myuser
ENTRY-POINT [“/bin/bash”]
CMD [“echo” , “hello world”]
Bonnes pratiques
Evitez d’installer des paquets inutiles
Exécutez un seul processus par conteneur
Limitez le nombre de couches
Cas pratique
Application Elasticsearch
Elasticsearch (Dockerfile)
FROM elasticsearch:1.7.1
MAINTAINER DockerMeetup DockerMeetup.com "Docker@Meetup.com"
VOLUME ["/usr/share/elasticsearch/data"]
COPY ./conf/elasticsearch.yml /usr/share/elasticsearch/config/elasticsearch.yml
COPY ./conf/logging.yml /usr/share/elasticsearch/config/logging.yml
Image officielle :
https://hub.docker.com/_/elasticsearch/
$docker build -t docker-meetup/elasticsearch:1.0
L’application (Dockerfile)
FROM java:8-jre
MAINTAINER DockerMeetup DockerMeetup.com "Docker@Meetup.com"
RUN mkdir -p /app/logs
COPY conf/prod-docker.yml /app/prod.yml
COPY target/awesome-app-1.0-SNAPSHOT.jar /app/awesome-prod.jar
EXPOSE 8080
EXPOSE 8081
WORKDIR /app
ENTRYPOINT [ “java”, “-jar”, “awesome-prod.jar”, “server”, “prod.yml” ]
Chargement initial (Dockerfile)
FROM tutum/curl:trusty
MAINTAINER DockerMeetup DockerMeetup.com "Docker@Meetup.com"
COPY ./script/load.sh /elasticsearch/load.sh
WORKDIR /elasticsearch/
ENTRYPOINT ["./load.sh"]
Automatiser le lancement
docker-compose up -d
docker-compose.yml
docker-compose.yml
LINK
Application Elasticsearch
VOLUME
/var/log/app
PORT
elasticsearch
/app/log
8080
8081
8080
8081
/var/log/elastic
VOLUME
/data
Elasticsearch-load
Merci pour votre attention !

Contenu connexe

Tendances

kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
Jean-Baptiste Claramonte
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetes
Kiwi Backup
 
A la découverte de kubernetes
A la découverte de kubernetesA la découverte de kubernetes
A la découverte de kubernetes
Julien Maitrehenry
 
DevOps 3 - Docker.pdf
DevOps 3 - Docker.pdfDevOps 3 - Docker.pdf
DevOps 3 - Docker.pdf
GhofraneFerchichi2
 
Presentation-DEVOPS-par-GDG
Presentation-DEVOPS-par-GDGPresentation-DEVOPS-par-GDG
Presentation-DEVOPS-par-GDG
TinarivosoaAbaniaina
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
Instruqt
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche Devops
Romain Chalumeau
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec docker
gcatt
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
Microsoft
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
Phuc Nguyen
 
Journée DevOps : La boite à outil d'une équipe DevOps
Journée DevOps : La boite à outil d'une équipe DevOpsJournée DevOps : La boite à outil d'une équipe DevOps
Journée DevOps : La boite à outil d'une équipe DevOps
Publicis Sapient Engineering
 
DEVOPS
DEVOPSDEVOPS
DEVOPS
TayssirLimem
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequences
Stéphane Di Cioccio
 
Sw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applicationsSw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applications
Stephane Woillez
 
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptx
boulonvert
 
Docker introduction (1)
Docker introduction (1)Docker introduction (1)
Docker introduction (1)
Gourav Varma
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
dotCloud
 
Intro docker
Intro dockerIntro docker
Intro docker
Fedir RYKHTIK
 
Intro to containerization
Intro to containerizationIntro to containerization
Intro to containerization
Balint Pato
 

Tendances (20)

kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetes
 
A la découverte de kubernetes
A la découverte de kubernetesA la découverte de kubernetes
A la découverte de kubernetes
 
DevOps 3 - Docker.pdf
DevOps 3 - Docker.pdfDevOps 3 - Docker.pdf
DevOps 3 - Docker.pdf
 
Presentation-DEVOPS-par-GDG
Presentation-DEVOPS-par-GDGPresentation-DEVOPS-par-GDG
Presentation-DEVOPS-par-GDG
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche Devops
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec docker
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Journée DevOps : La boite à outil d'une équipe DevOps
Journée DevOps : La boite à outil d'une équipe DevOpsJournée DevOps : La boite à outil d'une équipe DevOps
Journée DevOps : La boite à outil d'une équipe DevOps
 
DEVOPS
DEVOPSDEVOPS
DEVOPS
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequences
 
Sw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applicationsSw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applications
 
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et Configuration
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptx
 
Docker introduction (1)
Docker introduction (1)Docker introduction (1)
Docker introduction (1)
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Intro docker
Intro dockerIntro docker
Intro docker
 
Intro to containerization
Intro to containerizationIntro to containerization
Intro to containerization
 

En vedette

Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
Jérôme Petazzoni
 
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Silicon Comté
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalité
Zenika
 
Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
Nicolas Muller
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Silicon Comté
 
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Stephane Manciot
 
Docker: Aspects of Container Isolation
Docker: Aspects of Container IsolationDocker: Aspects of Container Isolation
Docker: Aspects of Container Isolation
allingeek
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
adri1s
 
Introduction à docker.io
Introduction à docker.ioIntroduction à docker.io
Introduction à docker.io
Nicolas Hennion
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Ludovic Piot
 
The challenge of application distribution - Introduction to Docker (2014 dec ...
The challenge of application distribution - Introduction to Docker (2014 dec ...The challenge of application distribution - Introduction to Docker (2014 dec ...
The challenge of application distribution - Introduction to Docker (2014 dec ...
Sébastien Portebois
 
NightClazz Docker Découverte
NightClazz Docker Découverte NightClazz Docker Découverte
NightClazz Docker Découverte
Zenika
 
Docker ata glance
Docker ata glanceDocker ata glance
Docker ata glance
Philip Wang
 
Dev opsday case study
Dev opsday   case studyDev opsday   case study
Dev opsday case study
Radoine Douhou
 
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Aurelien Navarre
 
Microservices and IBM Bluemix meetup presentation
Microservices and IBM Bluemix meetup presentationMicroservices and IBM Bluemix meetup presentation
Microservices and IBM Bluemix meetup presentation
Carlos Ferreira
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide
 
French Webinar: XL Deploy 4.0
French Webinar: XL Deploy 4.0French Webinar: XL Deploy 4.0
French Webinar: XL Deploy 4.0
XebiaLabs
 
Déploiements avec Docker
Déploiements avec DockerDéploiements avec Docker
Déploiements avec Docker
Luis Lopez
 
DOCKER AVEC RANCHER
DOCKER AVEC RANCHERDOCKER AVEC RANCHER
DOCKER AVEC RANCHER
TREEPTIK
 

En vedette (20)

Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalité
 
Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
 
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
 
Docker: Aspects of Container Isolation
Docker: Aspects of Container IsolationDocker: Aspects of Container Isolation
Docker: Aspects of Container Isolation
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
 
Introduction à docker.io
Introduction à docker.ioIntroduction à docker.io
Introduction à docker.io
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
The challenge of application distribution - Introduction to Docker (2014 dec ...
The challenge of application distribution - Introduction to Docker (2014 dec ...The challenge of application distribution - Introduction to Docker (2014 dec ...
The challenge of application distribution - Introduction to Docker (2014 dec ...
 
NightClazz Docker Découverte
NightClazz Docker Découverte NightClazz Docker Découverte
NightClazz Docker Découverte
 
Docker ata glance
Docker ata glanceDocker ata glance
Docker ata glance
 
Dev opsday case study
Dev opsday   case studyDev opsday   case study
Dev opsday case study
 
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
 
Microservices and IBM Bluemix meetup presentation
Microservices and IBM Bluemix meetup presentationMicroservices and IBM Bluemix meetup presentation
Microservices and IBM Bluemix meetup presentation
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
French Webinar: XL Deploy 4.0
French Webinar: XL Deploy 4.0French Webinar: XL Deploy 4.0
French Webinar: XL Deploy 4.0
 
Déploiements avec Docker
Déploiements avec DockerDéploiements avec Docker
Déploiements avec Docker
 
DOCKER AVEC RANCHER
DOCKER AVEC RANCHERDOCKER AVEC RANCHER
DOCKER AVEC RANCHER
 

Similaire à Docker Tours Meetup #1 - Introduction à Docker

5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
AbdellahELMAMOUN
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printemps
Web à Québec
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printemps
Julien Maitrehenry
 
Geek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerGeek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop Docker
Nizar GARRACHE
 
Be zend docker
Be zend dockerBe zend docker
Be zend docker
Kevin Verschaeve
 
Support : introduction à docker
Support : introduction à dockerSupport : introduction à docker
Support : introduction à docker
Boubker ABERWAG
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
AZUG FR
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
Sylvain Boily
 
A la découverte de docker
A la découverte de dockerA la découverte de docker
A la découverte de docker
jean pasqualini
 
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
AZUG FR
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
gcatt
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyug
amine17157
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Hamida Rebai Trabelsi
 
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdfoptimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
Pascal Ponzoni
 
2023-02-02 - Marvelous March
2023-02-02 - Marvelous March2023-02-02 - Marvelous March
2023-02-02 - Marvelous March
Frederic Leger
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ?
Romain Chalumeau
 
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
Paris Open Source Summit
 
De la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsDe la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logiciels
Johan Moreau
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
Julien Wittouck
 
Kubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationKubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestration
Wescale
 

Similaire à Docker Tours Meetup #1 - Introduction à Docker (20)

5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printemps
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printemps
 
Geek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerGeek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop Docker
 
Be zend docker
Be zend dockerBe zend docker
Be zend docker
 
Support : introduction à docker
Support : introduction à dockerSupport : introduction à docker
Support : introduction à docker
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
 
A la découverte de docker
A la découverte de dockerA la découverte de docker
A la découverte de docker
 
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyug
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
 
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdfoptimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
 
2023-02-02 - Marvelous March
2023-02-02 - Marvelous March2023-02-02 - Marvelous March
2023-02-02 - Marvelous March
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ?
 
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
 
De la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsDe la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logiciels
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
Kubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationKubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestration
 

Dernier

INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
Faga1939
 
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Chadi Kammoun
 
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
Nicolas Georgeault
 
Les Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et ComparatifLes Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et Comparatif
Top-plans
 
La Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdfLa Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdf
SoniazghalKallel
 
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
InnovaSter-Trade Ltd.
 

Dernier (6)

INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
 
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
 
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
 
Les Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et ComparatifLes Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et Comparatif
 
La Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdfLa Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdf
 
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
 

Docker Tours Meetup #1 - Introduction à Docker

  • 1. Docker Tours Meetup #1 9 Septembre 2015 @ Cantine numérique @DockerTours
  • 2. Programme Introduction à Docker & cas pratique par Antoine Boudot et Thibaut Marmin (~3x20mn) Du dev à la prod en passant par Jenkins par Benjamin Cousin et Cédric Gatay (~30mn) Pizzas / Bières offertes par le groupe Cyrès
  • 3. À propos... Thibaut Marmin @thibmarmin Ing. Développeur chez Ingensi Elasticsearch / Docker / AngularJS Organisateur Docker Tours Meetup Antoine Boudot @AntoineBoudot Ing. Développeur chez Ingensi Ansible / Docker / Hadoop Co-organisateur Docker Tours Meetup
  • 5. Qui devrait s’y intéresser ? Devs tous les langages tous les OS projet cible linux Ops la plupart des distributions Linux1 et cloud providers toutes les machines (physiques / VMs) 1 https://docs.docker.com/installation/ plus rapide plus agile = bénéfices !
  • 6. Pourquoi Docker est-il si populaire ?
  • 7. Pourquoi Docker est-il si populaire ?
  • 8. La solution : les containers ! VM Container
  • 9. Docker ▸ build ▸ ship ▸ run Né le 13 mars 20131 nov. 2013 : 7300 stars, 900 forks, 200 contributeurs jan. 2014 : levée de $15.000.000 mai 2014 : 11700 stars, 1900 forks, 400 contributeurs sept. 2014 : levée de $40.000.000 avr. 2015 : levée de $95.000.000 avr. 2015 : 20700 stars, 4700 forks, 900 contributeurs 1 depuis un projet dotCloud
  • 11. Les images $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE training/webapp latest fc77f57ad303 3 weeks ago 280.5 MB ubuntu 13.10 5e019ab7bf6d 4 weeks ago 180 MB ubuntu saucy 5e019ab7bf6d 4 weeks ago 180 MB ubuntu 12.04 74fe38d11401 4 weeks ago 209.6 MB ubuntu precise 74fe38d11401 4 weeks ago 209.6 MB ubuntu 12.10 a7cf8ae4e998 4 weeks ago 171.3 MB ubuntu quantal a7cf8ae4e998 4 weeks ago 171.3 MB ubuntu 14.04 99ec81b80c55 4 weeks ago 266 MB ubuntu latest 99ec81b80c55 4 weeks ago 266 MB ubuntu trusty 99ec81b80c55 4 weeks ago 266 MB ubuntu 13.04 316b678ddf48 4 weeks ago 169.4 MB ubuntu raring 316b678ddf48 4 weeks ago 169.4 MB ubuntu 10.04 3db9c44f4520 4 weeks ago 183 MB ubuntu lucid 3db9c44f4520 4 weeks ago 183 MB $
  • 13. Trouver une image $docker search centos INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/centos The offic... 1232 [OK] docker.io docker.io/ansible/centos7... Ansible o... 51 [OK] docker.io docker.io/jdeathe/centos-... CentOS-6 ... 11 [OK] docker.io docker.io/blalor/centos Bare-bone... 9 [OK] docker.io docker.io/jdeathe/centos-ssh CentOS-6 ... 6 [OK] docker.io docker.io/openshift/wildf... DEPRECATE... 6 [OK] docker.io docker.io/torusware/speed... Always up... 6 [OK] docker.io docker.io/million12/cento... Base Cent... 5 [OK] docker.io docker.io/nimmis/java-cen... This is d... 4 [OK] docker.io docker.io/jdeathe/centos-... CentOS-6 ... 2 [OK] . . . $
  • 14. Récupérer une image $ docker pull centos Pulling repository centos b7de3133ff98: Pulling dependent layers 5cc9e91966f7: Pulling fs layer 511136ea3c5a: Download complete ef52fb1fe610: Download complete . . . Status: Downloaded newer image for centos $
  • 16. Mode interactif $ docker run -it centos /bin/bash [root@af40a9d95e82 /]# -t Allocate a pseudo-tty -i Interactive mode (STDIN) . . .
  • 17. Mode background $ docker run -d --name hello centos /bin/bash -c "while true; do echo Hello world; sleep 1; done" ce7383fd92b9e15c9c96fa58bb99fe62fba4dee50c566abd5807804ef4f3110d $ -d Daemon mode (background) --name Specify container name . . .
  • 18. Mode background $ docker logs -f hello hello hello hello hello hello hello hello hello
  • 19. Lister les containers $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f9148ffb024e centos:latest "/bin/bash -c 'while 9 seconds ago Up 8 seconds hello e2ccef3bcc5a elasticsearch:latest "/docker-entrypoint. 5 weeks ago Up 2 seconds 9200... elastic $
  • 20. Contrôller les containers $ JOB=$(docker run -d [...]) # Start a new container $ docker stop $JOB # Stop the container $ docker start $JOB # Start the container $ docker restart $JOB # Restart the container $ docker kill $JOB # SIGKILL a container $ docker rm $JOB # Remove a container
  • 21. Créer une image $ docker commit -m "Say Hello" -a "Kate Smith" 0b2616b0e5a8 user/centos:v2 4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c $ docker build -t user/centos:v2 . pull -> commit build Depuis une image existante, après avoir exécuté des commandes Depuis un Dockerfile, basé sur une image existante $ cat helloFromScratch.tgz | docker import - hello:new import From scratch
  • 22. Mais encore... Binding de ports (expose / publish) Points de montage (volume) Connecter les containers (link) Variables d’environnement . . .
  • 25. Structure technique Dropwizard :9300 :8080 :8081 :9200 $ java -jar [JAR] server [CONF] { “_id”: ... { “_id”: ... { “_id”: ... { “_id”: ... { “_id”: ... { “_id”: ...
  • 26. Structure fonctionnelle Dropwizard :8080 :8081 GET /api # infos serveur GET /api/contact # liste des contacts GET /api/contact/:id # get d'un contact GET /healthcheck
  • 27. Sans docker Dropwizard { “_id”: ... { “_id”: ... { “_id”: ... { “_id”: ... { “_id”: ... { “_id”: ... Télécharger elasticsearch Installer et configurer (Gérer les dépendances) (Installer les dépendances) Configurer l’app en localhost localhost:9300
  • 29. Comment faire ? LINK Application Elasticsearch VOLUME /home/.../workdir application.jar config.yml PORT elasticsearch /workdir 8080 8081 8080 8081 REGISTRY
  • 31. Différences entre dev et prod Application Configurations LogsPersistance des données IMAGE
  • 32. Le Dockerfile Automatiser la création d’une image Rapide Reproductible Maintenable
  • 33. Dockerfile FROM BaseImage:version MAINTAINER DockerMeetup DockerMeetup.com "Docker@Meetup.com" ENV myvar=”value” RUN yum install pkgs1 , pkgs2 -y RUN mkdir -p /workdir/log COPY ./conf/application.conf /workdir/app.conf ADD www.archive.com/myarchive.tar.gz /workdir/ EXPOSE 9000 VOLUME [“/workdir/log”] WORKDIR [“/workdir”] USER myuser ENTRY-POINT [“/bin/bash”] CMD [“echo” , “hello world”]
  • 34. Bonnes pratiques Evitez d’installer des paquets inutiles Exécutez un seul processus par conteneur Limitez le nombre de couches
  • 36. Elasticsearch (Dockerfile) FROM elasticsearch:1.7.1 MAINTAINER DockerMeetup DockerMeetup.com "Docker@Meetup.com" VOLUME ["/usr/share/elasticsearch/data"] COPY ./conf/elasticsearch.yml /usr/share/elasticsearch/config/elasticsearch.yml COPY ./conf/logging.yml /usr/share/elasticsearch/config/logging.yml Image officielle : https://hub.docker.com/_/elasticsearch/ $docker build -t docker-meetup/elasticsearch:1.0
  • 37. L’application (Dockerfile) FROM java:8-jre MAINTAINER DockerMeetup DockerMeetup.com "Docker@Meetup.com" RUN mkdir -p /app/logs COPY conf/prod-docker.yml /app/prod.yml COPY target/awesome-app-1.0-SNAPSHOT.jar /app/awesome-prod.jar EXPOSE 8080 EXPOSE 8081 WORKDIR /app ENTRYPOINT [ “java”, “-jar”, “awesome-prod.jar”, “server”, “prod.yml” ]
  • 38. Chargement initial (Dockerfile) FROM tutum/curl:trusty MAINTAINER DockerMeetup DockerMeetup.com "Docker@Meetup.com" COPY ./script/load.sh /elasticsearch/load.sh WORKDIR /elasticsearch/ ENTRYPOINT ["./load.sh"]
  • 39. Automatiser le lancement docker-compose up -d docker-compose.yml
  • 41. Merci pour votre attention !