SlideShare a Scribd company logo
1 of 41
Download to read offline
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 !

More Related Content

What's hot

Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?Julien Maitrehenry
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation ConteneurisationTADx
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Présentation du DevOps
Présentation du DevOpsPrésentation du DevOps
Présentation du DevOpsCyrielle Orban
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker, Inc.
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker IntroductionPeng Xiao
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesStéphane Di Cioccio
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiquesdenier
 
Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Herofazalraja
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with DockerRavindu Fernando
 
Docker Basic to Advance
Docker Basic to AdvanceDocker Basic to Advance
Docker Basic to AdvanceParas Jain
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to dockerInstruqt
 

What's hot (20)

Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Docker in real life
Docker in real lifeDocker in real life
Docker in real life
 
Présentation du DevOps
Présentation du DevOpsPrésentation du DevOps
Présentation du DevOps
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequences
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
 
DevOps 3 - Docker.pdf
DevOps 3 - Docker.pdfDevOps 3 - Docker.pdf
DevOps 3 - Docker.pdf
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et Administration
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatique
 
What is Docker
What is DockerWhat is Docker
What is Docker
 
Intro docker
Intro dockerIntro docker
Intro docker
 
Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Hero
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
 
Docker Basic to Advance
Docker Basic to AdvanceDocker Basic to Advance
Docker Basic to Advance
 
What is Docker
What is Docker What is Docker
What is Docker
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 

Viewers also liked

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
 
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 2015Stephane Manciot
 
Docker introduction
Docker introductionDocker introduction
Docker introductiondotCloud
 
Docker: Aspects of Container Isolation
Docker: Aspects of Container IsolationDocker: Aspects of Container Isolation
Docker: Aspects of Container Isolationallingeek
 
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.ioNicolas 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 bassinLudovic 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 glancePhilip Wang
 
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 presentationCarlos 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 bassinOxalide
 
French Webinar: XL Deploy 4.0
French Webinar: XL Deploy 4.0French Webinar: XL Deploy 4.0
French Webinar: XL Deploy 4.0XebiaLabs
 
Déploiements avec Docker
Déploiements avec DockerDéploiements avec Docker
Déploiements avec DockerLuis Lopez
 

Viewers also liked (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 introduction
Docker introductionDocker introduction
Docker introduction
 
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
 

Similar to 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
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printempsJulien Maitrehenry
 
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 printempsWeb à Québec
 
Geek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerGeek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerNizar GARRACHE
 
Support : introduction à docker
Support : introduction à dockerSupport : introduction à docker
Support : introduction à dockerBoubker 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 DerueAZUG FR
 
A la découverte de docker
A la découverte de dockerA la découverte de docker
A la découverte de dockerjean 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 CoreOSgcatt
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugamine17157
 
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.pdfHamida 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.pdfPascal Ponzoni
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
2023-02-02 - Marvelous March
2023-02-02 - Marvelous March2023-02-02 - Marvelous March
2023-02-02 - Marvelous MarchFrederic 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 logicielsJohan 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'tsJulien Wittouck
 

Similar to 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...
 
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 - 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
 
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
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
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
 

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 !