SlideShare une entreprise Scribd logo
Docker Workshop By
RBK
By Assidi Wassim
Une machine virtuelle ?
Une machine virtuelle est comme un ordinateur "imaginaire" à
l'intérieur de votre vrai ordinateur. Vous pouvez l'utiliser pour faire
fonctionner différents systèmes d'exploitation.
Lorsque vous utilisez une machine virtuelle (VM), vous faites ce qu’on
appelle de la virtualisation lourde. En effet, vous recréez un
système complet dans le système hôte, pour qu’il ait ses propres
ressources.
Virtualisation lourde (L'isolation est totale)
Un conteneur ?
Un conteneur Linux est un processus ou un ensemble
de processus isolés du reste du système, tout en étant
légers.
Le conteneur permet de faire de la virtualisation
légère, c'est-à-dire qu'il ne virtualise pas les ressources,
il ne crée qu'une isolation des processus.
Le conteneur partage donc les ressources avec le
système hôte.
Virtualisation légère (seulement
l’isolation des processus)
Pourquoi utiliser des conteneurs ?
Plus léger : Les conteneurs utilisent moins de ressources que les machines virtuelles car ils partagent des composants
communs.
Démarre vite : Les conteneurs se lancent rapidement car ils n'ont pas besoin de charger tout un système d'exploitation.
Peu exigeant : Ils peuvent être déployés sur différents systèmes sans trop de soucis.
Sécurisé : Ils offrent une bonne protection sans ralentir les performances.
Facile à agrandir : Ils peuvent être étendus rapidement en cas de besoin.
C’est quoi Docker ?
Docker a été créé pour les besoins d'une société de Platform as a Service (PaaS)
appelée DotCloud. Finalement, en mars 2013, l'entreprise a créé une nouvelle structure
nommée Docker Inc et a placé en open source son produit Docker.
Docker apporte une notion importante dans le monde du conteneur. Dans la vision
Docker, un conteneur ne doit faire tourner qu'un seul processus. Ainsi, dans le cas
d'une stack LAMP (Linux, Apache, MySQL, PHP), nous devons créer 3 conteneurs
différents, un pour Apache, un pour MySQL et un dernier pour PHP. Alors que dans un
conteneur LXC ou OpenVZ, nous aurions fait tourner l'ensemble des 3 services dans un
seul et unique conteneur.
Le logiciel Docker est une technologie de conteneurisation qui permet la création et l'utilisation de
conteneurs Linux®
Pourquoi utiliser Docker ?
Prenons un exemple : vous avez développé votre projet en local. Tout
fonctionne bien, mais au moment de mettre en production, vous vous rendez
compte que vous ne savez pas comment déployer votre projet.
Un autre exemple : vous êtes dans une équipe de 10 personnes et chacun
utilise un OS différent (Ubuntu, macOS, Windows, CentOS, etc.). Comment
faire pour avoir un environnement unifié et fonctionnel chez l'ensemble
des développeurs ?
Docker répond à une problématique forte dans le monde du développement
Docker répond à ces problématiques en créant des conteneurs. Grâce à Docker, vous
n'aurez plus de problème de différence d'environnement, et votre code marchera partout !
Catégories des conteneurs Docker ?
Stateless : Un conteneur Docker sans mémoire, qui ne stocke pas les
changements effectués à l'intérieur et revient à son état initial après chaque
redémarrage ou recréation (Un serveur web tel que Nginx,Apache).
Stateful : Un conteneur Docker qui conserve les changements effectués à
l'intérieur même après le redémarrage ou la recréation, nécessitant une gestion
plus complexe pour maintenir la cohérence des données (une base de données
telle que MySQL ou MongoDB).
Stateless vs Stateful
C’est quoi Docker Hub ?
Le Docker Hub est la registry officielle de Docker.
Une registry est un logiciel qui permet de partager des images à d'autres personnes.
C’est un composant majeur dans l’écosystème Docker :
● Les développeurs permet de distribuer des images prêtes à l’emploi et de les versionner avec un système de
tags ;
● Les systèmes automatisés permet de déployer ces applications sur vos environnements de développement et de
production.
NB : Docker Hub et GitHub servent des objectifs similaires, ils présentent quelques différences fondamentales. Docker Hub
est principalement utilisé pour stocker et partager des images Docker, tandis que GitHub est utilisé pour le contrôle de
version et la collaboration.
Quelques notions du Docker ?
Dockerfile : Un ensemble d'instructions pour dire à Docker comment construire une image.
Image : Un modèle préconçu pour les conteneurs, contenant tout ce dont une application a besoin pour fonctionner.
Conteneur : Une instance exécutable d'une image, agissant comme une boîte virtuelle contenant l'application et son
environnement d'exécution.
Volume : Un moyen de stocker et partager des données entre les conteneurs Docker, en contournant le système de
fichiers de base du conteneur.
Réseau : Un ensemble de connexions permettant aux conteneurs Docker de communiquer entre eux, que ce soit sur la
même machine hôte ou sur différentes machines.
Docker Compose : Un outil pour gérer des applications Docker composées de plusieurs conteneurs.
Workflow détaillé du Docker ?
La commande docker build est une commande clé de Docker qui
permet de construire une image Docker à partir d'un Dockerfile et d'un
contexte de build.
La commande docker run est utilisée pour exécuter un conteneur à
partir d'une image Docker.
La commande docker pull est utilisée pour récupérer une image
Docker à partir de Docker Hub ou d'un autre registre.
La commande docker push est utilisée pour pousser une image Docker
vers Docker Hub ou un autre registre.
La commande docker rmi est utilisée pour supprimer une ou plusieurs
images Docker de votre système local.
Comment créer Dockerfile ?
1 - Pour commencer, créez un fichier appelé "Dockerfile" dans le répertoire racine de
votre code source. Dans notre cas d'étude, nous considérons un projet Node.js.
2 - Choisir une image de base Node.js : Utilisez l'image de base Node.js à partir de Docker Hub.
3 - Définir le répertoire de travail : Utilisez l'instruction WORKDIR pour définir le répertoire de travail dans
le conteneur.
Comment créer Dockerfile ?
4 - Copier les fichiers pertinents : Utilisez l'instruction COPY pour copier les fichiers de votre
application Node.js depuis votre système local vers le conteneur.
5 - Installer les dépendances : Utilisez l'instruction RUN pour exécuter la commande npm
install et installer les dépendances de votre application.
Comment créer Dockerfile ?
6 - Exposer le port d'écoute de votre application : Utilisez l'instruction EXPOSE pour spécifier le
port sur lequel votre application Node.js écoute.
7 - Définir la commande par défaut : Utilisez l'instruction CMD pour spécifier la commande par défaut à
exécuter lors du démarrage du conteneur.
L'intégralité du Dockerfile
Comment construire (build) une image ?
Construire l'image ( build ) : Utilisez la commande docker build pour construire l'image Docker en
spécifiant le chemin vers le répertoire contenant le Dockerfile.
Comment lancer (run) un container ?
Lancez le conteneur : Une fois que vous avez construit l'image, utilisez la commande docker run pour
lancer un conteneur basé sur cette image. Assurez-vous d'exposer le port que votre application Node.js
utilise. Par exemple, si votre application Node.js écoute le port 3000, utilisez la commande suivante :
En ajoutant l'option -d à la commande docker run, vous spécifiez que vous souhaitez que le
conteneur s'exécute en arrière-plan. Cela vous permet de libérer votre terminal tout en laissant le
conteneur s'exécuter indépendamment.
Ainsi, la commande docker run -d -p 3000:3000 nom_de_votre_image lancera le conteneur en
mode détaché tout en effectuant le mappage du port 3000 du conteneur Docker (Container Port) vers le port
3000 de l'hôte (Host Port).
Partager une image sur docker hub ?
Connectez-vous à Docker Hub :
Bien sûr, voici une version simplifiée des étapes pour partager une image sur Docker Hub :
Taguez votre image :
Poussez l'image taguée sur Docker Hub :
Le fichier .dockerignore ?
Sur un projet Git, nous utilisons un fichier .gitignore ; sur Docker il existe le même type de fichier. Celui-ci
permet de ne pas copier certains fichiers et/ou dossiers dans notre conteneur lors de l’exécution de
l'instruction ADD .
À la racine de votre projet (soit à côté de votre fichier Dockerfile), vous devez créer un fichier
.dockerignore qui contiendra les lignes suivantes :
Les commandes Docker ?
https://docs.docker.com/get-started/docker_cheatsheet.pdf
Les commandes Dockerfile ?
https://docs.docker.com/dev
elop/develop-images/docker
file_best-practices/
https://docs.docker.com/engi
ne/reference/builder/
Overview of best practices
for writing Dockerfiles
Dockerfile reference
TP 01 - Docker : Conteneurisation d'une
application Node.js avec Docker
C’est quoi Docker Compose ?
Docker Compose est un outil destiné à définir et exécuter des
applications Docker à plusieurs conteneurs.
Dans Docker Compose, vous utilisez un fichier YAML pour
configurer les services de votre application. Ensuite, vous créez
et vous démarrez tous les services à partir de votre configuration
en utilisant une seule commande.
Pourquoi Docker Compose ?
Dans une application réelle, on peut avoir plusieurs technologies (ou plusieurs « services ») pour assurer le
bon fonctionnement d’un système dans son ensemble (Exemple pour faire fonctionner mon application j’ai
besoin de Node.js, Mongodb, et d’un serveur Web pour l’interface client).
C’est dans des cas comme celui-ci que nous allons utiliser Docker-Compose. Avec Docker compose-nous
allons créer une architecture multiconteneur que l’on peut appeler « stack ». Cette Stack sera :
- Autonome (car prête à être « mise en place » partout, quelle que soit la plateforme cible).
- Pré-paramétrée (tout est dans le fichier docker-compose.yml). Isolé (tous les services ne sont pas
forcément accessibles du public, mais sont accessibles par vos autres applications).
- Administrable simplement grâce au cli (docker compose up/down/start/stop).
Installation du Docker Compose
- Docker Compose est fourni directement par les développeurs de Docker, cependant
sous Linux il n’est pas inclus dans l’installation de base des paquets.
- Pour l’installer, rendez-vous sur la documentation de Docker .
- Sous Windows et OSX pas de soucis, Docker Compose est inclus dans l’installation de
base.
Notions de base du Docker Compose
- Services : Un service est une définition de conteneur, généralement basée sur une image Docker. Vous déclarez
les services dans le fichier docker-compose.yml. Chaque service représente une partie de votre application.
- Conteneur (container) : Un conteneur Docker est une instance d'une image Docker. Chaque service que vous
définissez dans Docker Compose est associé à un conteneur.
- Image Docker : Une image Docker est un package qui contient tout ce dont un conteneur a besoin pour
s'exécuter, y compris le code, les bibliothèques, les dépendances et les configurations. Vous pouvez utiliser des
images existantes à partir de Docker Hub ou créer les vôtres.
- Réseau (networks) : Docker Compose crée automatiquement un réseau interne pour votre application,
permettant aux conteneurs de communiquer les uns avec les autres. Vous pouvez également créer des réseaux
personnalisés si nécessaire.
- Volume (volumes) : Les volumes Docker permettent de persister des données en dehors des conteneurs, ce qui
est essentiel pour stocker des données sensibles, des bases de données, des fichiers de configuration, etc.
Notions de base du Docker Compose
- Dépendances (depends_on) : Vous pouvez définir des dépendances entre les services dans Docker
Compose. Par exemple, un service peut dépendre d'un autre, ce qui garantit que les conteneurs sont
démarrés dans le bon ordre.
- Environnement (environment) : Vous pouvez définir des variables d'environnement spécifiques à chaque
service dans le fichier docker-compose.yml. Cela permet de personnaliser le comportement des
conteneurs.
- Docker Compose CLI : Docker Compose offre un ensemble de commandes pour gérer votre application,
telles que docker-compose up pour démarrer les conteneurs, docker-compose down pour les arrêter,
docker-compose ps pour afficher l'état des conteneurs, et bien d'autres.
- Fichier docker-compose.yml : C'est le fichier de configuration principal où vous spécifiez les services, les
réseaux, les volumes, les variables d'environnement, etc., nécessaires pour votre application. Il s'agit d'un
fichier au format YAML.
Structure d’un Docker Compose
La structure d'un fichier Docker
Compose est assez simple. Un fichier
Docker Compose est généralement
nommé docker-compose.yml et est
utilisé pour définir et exécuter des
applications Docker à l'aide de
plusieurs conteneurs.
Voici un exemple de structure de base :
Node.js,mongodb avec Docker Compose
Rappel du fichier Dockerfile avec node.js
TP 02 - Conteneurisation d'une application
Node.js,Mongodb avec Docker Compose

Contenu connexe

Similaire à docker-workshop-by-rbk.pdf jhuhiuguigugyug

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
 
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
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation dockerOlivier Eeckhoutte
 
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
 
formation_dockerhscv jh sjsjx jhxavcjhvdcjhvajhsdvc
formation_dockerhscv jh   sjsjx jhxavcjhvdcjhvajhsdvcformation_dockerhscv jh   sjsjx jhxavcjhvdcjhvajhsdvc
formation_dockerhscv jh sjsjx jhxavcjhvdcjhvajhsdvchichamelhirch
 
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
 
Comment remplacer cygwin par docker
Comment remplacer cygwin par dockerComment remplacer cygwin par docker
Comment remplacer cygwin par dockerNicolas Trauwaen
 
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
 
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
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation ConteneurisationTADx
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
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
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxAnisSalhi3
 
optimadata.nl-Comment exécuter Postgres sur Docker partie 2.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 2.pdfoptimadata.nl-Comment exécuter Postgres sur Docker partie 2.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 2.pdfPascal Ponzoni
 
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...TelecomValley
 

Similaire à docker-workshop-by-rbk.pdf jhuhiuguigugyug (20)

What is Docker
What is Docker What is Docker
What is Docker
 
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 ?
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
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
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation docker
 
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
 
Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
 
formation_dockerhscv jh sjsjx jhxavcjhvdcjhvajhsdvc
formation_dockerhscv jh   sjsjx jhxavcjhvdcjhvajhsdvcformation_dockerhscv jh   sjsjx jhxavcjhvdcjhvajhsdvc
formation_dockerhscv jh sjsjx jhxavcjhvdcjhvajhsdvc
 
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, ...
 
Comment remplacer cygwin par docker
Comment remplacer cygwin par dockerComment remplacer cygwin par docker
Comment remplacer cygwin par docker
 
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 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
 
Intro docker
Intro dockerIntro docker
Intro docker
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
DevOps 3 - Docker.pdf
DevOps 3 - Docker.pdfDevOps 3 - Docker.pdf
DevOps 3 - Docker.pdf
 
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
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
 
optimadata.nl-Comment exécuter Postgres sur Docker partie 2.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 2.pdfoptimadata.nl-Comment exécuter Postgres sur Docker partie 2.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 2.pdf
 
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
 

Plus de amine17157

doranum_07_fiche_synthetique_formats_ouverts_fermes.pdf
doranum_07_fiche_synthetique_formats_ouverts_fermes.pdfdoranum_07_fiche_synthetique_formats_ouverts_fermes.pdf
doranum_07_fiche_synthetique_formats_ouverts_fermes.pdfamine17157
 
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhvSOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhvamine17157
 
cours soa partie 1 dfvfvfdbgfbvdfhbvhdfbvhdbvhjdv
cours soa partie 1 dfvfvfdbgfbvdfhbvhdfbvhdbvhjdvcours soa partie 1 dfvfvfdbgfbvdfhbvhdfbvhdbvhjdv
cours soa partie 1 dfvfvfdbgfbvdfhbvhdfbvhdbvhjdvamine17157
 
ch8_architecture.ppt
ch8_architecture.pptch8_architecture.ppt
ch8_architecture.pptamine17157
 
ch7_memoires.ppt
ch7_memoires.pptch7_memoires.ppt
ch7_memoires.pptamine17157
 
ch4_circuitscombinatoires.ppt
ch4_circuitscombinatoires.pptch4_circuitscombinatoires.ppt
ch4_circuitscombinatoires.pptamine17157
 
CHAP 1 PRÉSENTATION GENERALE.pdf
CHAP 1 PRÉSENTATION GENERALE.pdfCHAP 1 PRÉSENTATION GENERALE.pdf
CHAP 1 PRÉSENTATION GENERALE.pdfamine17157
 
bigdata-25.pdf
bigdata-25.pdfbigdata-25.pdf
bigdata-25.pdfamine17157
 

Plus de amine17157 (8)

doranum_07_fiche_synthetique_formats_ouverts_fermes.pdf
doranum_07_fiche_synthetique_formats_ouverts_fermes.pdfdoranum_07_fiche_synthetique_formats_ouverts_fermes.pdf
doranum_07_fiche_synthetique_formats_ouverts_fermes.pdf
 
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhvSOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
SOA-Partie 2.pdf hvjhvhjvkhvhjvhvhvjhvkhv
 
cours soa partie 1 dfvfvfdbgfbvdfhbvhdfbvhdbvhjdv
cours soa partie 1 dfvfvfdbgfbvdfhbvhdfbvhdbvhjdvcours soa partie 1 dfvfvfdbgfbvdfhbvhdfbvhdbvhjdv
cours soa partie 1 dfvfvfdbgfbvdfhbvhdfbvhdbvhjdv
 
ch8_architecture.ppt
ch8_architecture.pptch8_architecture.ppt
ch8_architecture.ppt
 
ch7_memoires.ppt
ch7_memoires.pptch7_memoires.ppt
ch7_memoires.ppt
 
ch4_circuitscombinatoires.ppt
ch4_circuitscombinatoires.pptch4_circuitscombinatoires.ppt
ch4_circuitscombinatoires.ppt
 
CHAP 1 PRÉSENTATION GENERALE.pdf
CHAP 1 PRÉSENTATION GENERALE.pdfCHAP 1 PRÉSENTATION GENERALE.pdf
CHAP 1 PRÉSENTATION GENERALE.pdf
 
bigdata-25.pdf
bigdata-25.pdfbigdata-25.pdf
bigdata-25.pdf
 

docker-workshop-by-rbk.pdf jhuhiuguigugyug

  • 2. Une machine virtuelle ? Une machine virtuelle est comme un ordinateur "imaginaire" à l'intérieur de votre vrai ordinateur. Vous pouvez l'utiliser pour faire fonctionner différents systèmes d'exploitation. Lorsque vous utilisez une machine virtuelle (VM), vous faites ce qu’on appelle de la virtualisation lourde. En effet, vous recréez un système complet dans le système hôte, pour qu’il ait ses propres ressources. Virtualisation lourde (L'isolation est totale)
  • 3. Un conteneur ? Un conteneur Linux est un processus ou un ensemble de processus isolés du reste du système, tout en étant légers. Le conteneur permet de faire de la virtualisation légère, c'est-à-dire qu'il ne virtualise pas les ressources, il ne crée qu'une isolation des processus. Le conteneur partage donc les ressources avec le système hôte. Virtualisation légère (seulement l’isolation des processus)
  • 4. Pourquoi utiliser des conteneurs ? Plus léger : Les conteneurs utilisent moins de ressources que les machines virtuelles car ils partagent des composants communs. Démarre vite : Les conteneurs se lancent rapidement car ils n'ont pas besoin de charger tout un système d'exploitation. Peu exigeant : Ils peuvent être déployés sur différents systèmes sans trop de soucis. Sécurisé : Ils offrent une bonne protection sans ralentir les performances. Facile à agrandir : Ils peuvent être étendus rapidement en cas de besoin.
  • 5. C’est quoi Docker ? Docker a été créé pour les besoins d'une société de Platform as a Service (PaaS) appelée DotCloud. Finalement, en mars 2013, l'entreprise a créé une nouvelle structure nommée Docker Inc et a placé en open source son produit Docker. Docker apporte une notion importante dans le monde du conteneur. Dans la vision Docker, un conteneur ne doit faire tourner qu'un seul processus. Ainsi, dans le cas d'une stack LAMP (Linux, Apache, MySQL, PHP), nous devons créer 3 conteneurs différents, un pour Apache, un pour MySQL et un dernier pour PHP. Alors que dans un conteneur LXC ou OpenVZ, nous aurions fait tourner l'ensemble des 3 services dans un seul et unique conteneur. Le logiciel Docker est une technologie de conteneurisation qui permet la création et l'utilisation de conteneurs Linux®
  • 6. Pourquoi utiliser Docker ? Prenons un exemple : vous avez développé votre projet en local. Tout fonctionne bien, mais au moment de mettre en production, vous vous rendez compte que vous ne savez pas comment déployer votre projet. Un autre exemple : vous êtes dans une équipe de 10 personnes et chacun utilise un OS différent (Ubuntu, macOS, Windows, CentOS, etc.). Comment faire pour avoir un environnement unifié et fonctionnel chez l'ensemble des développeurs ? Docker répond à une problématique forte dans le monde du développement Docker répond à ces problématiques en créant des conteneurs. Grâce à Docker, vous n'aurez plus de problème de différence d'environnement, et votre code marchera partout !
  • 7. Catégories des conteneurs Docker ? Stateless : Un conteneur Docker sans mémoire, qui ne stocke pas les changements effectués à l'intérieur et revient à son état initial après chaque redémarrage ou recréation (Un serveur web tel que Nginx,Apache). Stateful : Un conteneur Docker qui conserve les changements effectués à l'intérieur même après le redémarrage ou la recréation, nécessitant une gestion plus complexe pour maintenir la cohérence des données (une base de données telle que MySQL ou MongoDB). Stateless vs Stateful
  • 8. C’est quoi Docker Hub ? Le Docker Hub est la registry officielle de Docker. Une registry est un logiciel qui permet de partager des images à d'autres personnes. C’est un composant majeur dans l’écosystème Docker : ● Les développeurs permet de distribuer des images prêtes à l’emploi et de les versionner avec un système de tags ; ● Les systèmes automatisés permet de déployer ces applications sur vos environnements de développement et de production. NB : Docker Hub et GitHub servent des objectifs similaires, ils présentent quelques différences fondamentales. Docker Hub est principalement utilisé pour stocker et partager des images Docker, tandis que GitHub est utilisé pour le contrôle de version et la collaboration.
  • 9. Quelques notions du Docker ? Dockerfile : Un ensemble d'instructions pour dire à Docker comment construire une image. Image : Un modèle préconçu pour les conteneurs, contenant tout ce dont une application a besoin pour fonctionner. Conteneur : Une instance exécutable d'une image, agissant comme une boîte virtuelle contenant l'application et son environnement d'exécution. Volume : Un moyen de stocker et partager des données entre les conteneurs Docker, en contournant le système de fichiers de base du conteneur. Réseau : Un ensemble de connexions permettant aux conteneurs Docker de communiquer entre eux, que ce soit sur la même machine hôte ou sur différentes machines. Docker Compose : Un outil pour gérer des applications Docker composées de plusieurs conteneurs.
  • 10. Workflow détaillé du Docker ? La commande docker build est une commande clé de Docker qui permet de construire une image Docker à partir d'un Dockerfile et d'un contexte de build. La commande docker run est utilisée pour exécuter un conteneur à partir d'une image Docker. La commande docker pull est utilisée pour récupérer une image Docker à partir de Docker Hub ou d'un autre registre. La commande docker push est utilisée pour pousser une image Docker vers Docker Hub ou un autre registre. La commande docker rmi est utilisée pour supprimer une ou plusieurs images Docker de votre système local.
  • 11. Comment créer Dockerfile ? 1 - Pour commencer, créez un fichier appelé "Dockerfile" dans le répertoire racine de votre code source. Dans notre cas d'étude, nous considérons un projet Node.js. 2 - Choisir une image de base Node.js : Utilisez l'image de base Node.js à partir de Docker Hub. 3 - Définir le répertoire de travail : Utilisez l'instruction WORKDIR pour définir le répertoire de travail dans le conteneur.
  • 12. Comment créer Dockerfile ? 4 - Copier les fichiers pertinents : Utilisez l'instruction COPY pour copier les fichiers de votre application Node.js depuis votre système local vers le conteneur. 5 - Installer les dépendances : Utilisez l'instruction RUN pour exécuter la commande npm install et installer les dépendances de votre application.
  • 13. Comment créer Dockerfile ? 6 - Exposer le port d'écoute de votre application : Utilisez l'instruction EXPOSE pour spécifier le port sur lequel votre application Node.js écoute. 7 - Définir la commande par défaut : Utilisez l'instruction CMD pour spécifier la commande par défaut à exécuter lors du démarrage du conteneur.
  • 15. Comment construire (build) une image ? Construire l'image ( build ) : Utilisez la commande docker build pour construire l'image Docker en spécifiant le chemin vers le répertoire contenant le Dockerfile.
  • 16. Comment lancer (run) un container ? Lancez le conteneur : Une fois que vous avez construit l'image, utilisez la commande docker run pour lancer un conteneur basé sur cette image. Assurez-vous d'exposer le port que votre application Node.js utilise. Par exemple, si votre application Node.js écoute le port 3000, utilisez la commande suivante : En ajoutant l'option -d à la commande docker run, vous spécifiez que vous souhaitez que le conteneur s'exécute en arrière-plan. Cela vous permet de libérer votre terminal tout en laissant le conteneur s'exécuter indépendamment. Ainsi, la commande docker run -d -p 3000:3000 nom_de_votre_image lancera le conteneur en mode détaché tout en effectuant le mappage du port 3000 du conteneur Docker (Container Port) vers le port 3000 de l'hôte (Host Port).
  • 17. Partager une image sur docker hub ? Connectez-vous à Docker Hub : Bien sûr, voici une version simplifiée des étapes pour partager une image sur Docker Hub : Taguez votre image : Poussez l'image taguée sur Docker Hub :
  • 18. Le fichier .dockerignore ? Sur un projet Git, nous utilisons un fichier .gitignore ; sur Docker il existe le même type de fichier. Celui-ci permet de ne pas copier certains fichiers et/ou dossiers dans notre conteneur lors de l’exécution de l'instruction ADD . À la racine de votre projet (soit à côté de votre fichier Dockerfile), vous devez créer un fichier .dockerignore qui contiendra les lignes suivantes :
  • 19. Les commandes Docker ? https://docs.docker.com/get-started/docker_cheatsheet.pdf
  • 20. Les commandes Dockerfile ? https://docs.docker.com/dev elop/develop-images/docker file_best-practices/ https://docs.docker.com/engi ne/reference/builder/ Overview of best practices for writing Dockerfiles Dockerfile reference
  • 21. TP 01 - Docker : Conteneurisation d'une application Node.js avec Docker
  • 22. C’est quoi Docker Compose ? Docker Compose est un outil destiné à définir et exécuter des applications Docker à plusieurs conteneurs. Dans Docker Compose, vous utilisez un fichier YAML pour configurer les services de votre application. Ensuite, vous créez et vous démarrez tous les services à partir de votre configuration en utilisant une seule commande.
  • 23. Pourquoi Docker Compose ? Dans une application réelle, on peut avoir plusieurs technologies (ou plusieurs « services ») pour assurer le bon fonctionnement d’un système dans son ensemble (Exemple pour faire fonctionner mon application j’ai besoin de Node.js, Mongodb, et d’un serveur Web pour l’interface client). C’est dans des cas comme celui-ci que nous allons utiliser Docker-Compose. Avec Docker compose-nous allons créer une architecture multiconteneur que l’on peut appeler « stack ». Cette Stack sera : - Autonome (car prête à être « mise en place » partout, quelle que soit la plateforme cible). - Pré-paramétrée (tout est dans le fichier docker-compose.yml). Isolé (tous les services ne sont pas forcément accessibles du public, mais sont accessibles par vos autres applications). - Administrable simplement grâce au cli (docker compose up/down/start/stop).
  • 24. Installation du Docker Compose - Docker Compose est fourni directement par les développeurs de Docker, cependant sous Linux il n’est pas inclus dans l’installation de base des paquets. - Pour l’installer, rendez-vous sur la documentation de Docker . - Sous Windows et OSX pas de soucis, Docker Compose est inclus dans l’installation de base.
  • 25. Notions de base du Docker Compose - Services : Un service est une définition de conteneur, généralement basée sur une image Docker. Vous déclarez les services dans le fichier docker-compose.yml. Chaque service représente une partie de votre application. - Conteneur (container) : Un conteneur Docker est une instance d'une image Docker. Chaque service que vous définissez dans Docker Compose est associé à un conteneur. - Image Docker : Une image Docker est un package qui contient tout ce dont un conteneur a besoin pour s'exécuter, y compris le code, les bibliothèques, les dépendances et les configurations. Vous pouvez utiliser des images existantes à partir de Docker Hub ou créer les vôtres. - Réseau (networks) : Docker Compose crée automatiquement un réseau interne pour votre application, permettant aux conteneurs de communiquer les uns avec les autres. Vous pouvez également créer des réseaux personnalisés si nécessaire. - Volume (volumes) : Les volumes Docker permettent de persister des données en dehors des conteneurs, ce qui est essentiel pour stocker des données sensibles, des bases de données, des fichiers de configuration, etc.
  • 26. Notions de base du Docker Compose - Dépendances (depends_on) : Vous pouvez définir des dépendances entre les services dans Docker Compose. Par exemple, un service peut dépendre d'un autre, ce qui garantit que les conteneurs sont démarrés dans le bon ordre. - Environnement (environment) : Vous pouvez définir des variables d'environnement spécifiques à chaque service dans le fichier docker-compose.yml. Cela permet de personnaliser le comportement des conteneurs. - Docker Compose CLI : Docker Compose offre un ensemble de commandes pour gérer votre application, telles que docker-compose up pour démarrer les conteneurs, docker-compose down pour les arrêter, docker-compose ps pour afficher l'état des conteneurs, et bien d'autres. - Fichier docker-compose.yml : C'est le fichier de configuration principal où vous spécifiez les services, les réseaux, les volumes, les variables d'environnement, etc., nécessaires pour votre application. Il s'agit d'un fichier au format YAML.
  • 27. Structure d’un Docker Compose La structure d'un fichier Docker Compose est assez simple. Un fichier Docker Compose est généralement nommé docker-compose.yml et est utilisé pour définir et exécuter des applications Docker à l'aide de plusieurs conteneurs. Voici un exemple de structure de base :
  • 29. Rappel du fichier Dockerfile avec node.js
  • 30. TP 02 - Conteneurisation d'une application Node.js,Mongodb avec Docker Compose