SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
Chapitre 3 : Docker
ESPRIT – UP ASI (Architecture des Systèmes d’Information)
Bureau E204
DevOps
© 2023-2024
2
Plan du cours
© 2023-2024 – Module DevOps – Introduction
– Evolution de la machine de production
– La virtualisation, la conteneurisation
– La virtualisation Vs la conteneurisation
– Docker
• Définition et concepts
• Avantages et inconvénients
• Architecture de Docker
• Installation
• Docker Hub, Docker File, commandes de base
3
Evolution de la machine de production
© 2023-2024 – Module DevOps – Introduction
– Une seule application dans un seul serveur physique.
– Limites :
○ Gaspillage de ressources
○ Manque de flexibilité
○ Complexité de la gestion
○ Redondance insuffisante
○ Coûts élevés
○ Difficultés de mise à l'échelle Architecture traditionnelle
4
Evolution de la machine de production
© 2023-2024 – Module DevOps – Introduction
– Virtualisation à base d’hyperviseur.
– C’est une technologie qui permet d’exécuter plusieurs
systèmes d'exploitation et applications sur un même serveur
physique.
– La popularité de la virtualisation a été grandement amplifiée
grâce à l'émergence du cloud computing. Architecture virtuelle
© 2023-2024 – Module DevOps – Introduction
La virtualisation
Louer du temps de calcul et de la capacité
de stockage et le contrôle de ressources
pour les applications Cloud sont réalisés en
déployant une technologie de virtualisation
sur les ressources du fournisseur Cloud
5
Hypervisors
Virtualization overhead
Virtualisation lourde
Containers
Elasticity and density
Virtualisation légère
Computing capacity and storage
Accuracy of compute
6
© 2023-2024 – Module DevOps – Introduction
– La virtualisation lourde, appelée aussi virtualisation à base d'hyperviseur :
La Virtualisation lourde
○ Simulation de Machines Physiques : Elle permet de
simuler une ou plusieurs machines physiques.
○ Exécution sous forme de VM : Ces machines virtuelles
(VM) s'exécutent sur un serveur.
○ OS Intégré : Chaque VM intègre son propre système
d'exploitation.
○ Exécution d'Applications : Les applications sont
exécutées à l'intérieur de ces machines virtuelles.
7
© 2023-2024 – Module DevOps – Introduction
Avantages des VMs :
○ Optimisation des ressources
○ Division d'une machine physique
○ Facilité de mise à l'échelle
○ VMs dans le Cloud (Azure, Amazon Web Services (AWS), VMware)
○ Élasticité rapide
○ Modèle Pay as You Go
La Virtualisation lourde
8
© 2023-2024 – Module DevOps – Introduction
Limites des VMs :
○ Chaque VM a besoin des ressources (CPU, Stockage
(Disque), RAM ,Un OS invité)
○ En augmentant les VMs, on demande plus de
ressources :
▪ Chaque OS invité alloue ses propres ressources
→ Gaspillage
▪ Portabilité d’application n’est pas garantie
La Virtualisation lourde
9
La virtualisation légère : la conteneurisation
© 2023-2024 – Module DevOps – Introduction
La conteneurisation est une méthode légère et agile pour gérer la virtualisation.
– Fourniture de services complets : Fournit tout ce dont une application a besoin
(les services, scripts, API, librairies) afin d'économiser les ressources.
– Isolation au niveau des conteneurs : Isole les applications les unes des autres,
mais partage le même système d'exploitation (OS).
– Partage d'OS et d'espace mémoire : Permet aux applications de coexister sur le
même OS et de partager la mémoire pour économiser les ressources.
10
Qu’est ce qu’un Conteneur ?
© 2023-2024 – Module DevOps – Introduction
Enveloppe (emballage) standardisé des applications et leurs dépendances.
● Isolation des applications : Chaque application est
séparée des autres pour éviter les conflits.
● Partage du noyau OS : Il partage le noyau du système
d'exploitation avec le système hôte pour économiser
des ressources.
● Compatible avec Linux et Windows Server : Il
fonctionne sur tous les systèmes Linux et Windows
Server, ce qui le rend largement pris en charge.
11
Conteneurisation Vs Virtualisation
© 2023-2024 – Module DevOps – Introduction
Machines Virtuelles (VMs) :
● Recréent un serveur complet pour
chaque application, y compris son propre
système d'exploitation.
Conteneurs :
● Isolent chaque application, mais partagent le
même système d'exploitation de l'ordinateur hôte.
● Plusieurs conteneurs peuvent partager le même
système d'exploitation pour différentes tâches.
VM VM VM
Container
12
Conteneurisation Vs Virtualisation
© 2023-2024 – Module DevOps – Introduction
Virtualisation Conteneurisation
Une virtualisation lourde Une virtualisation légère
À base d’hyperviseur À base des conteneurs
Virtualisation des ressources hardware
(CPU, RAM, disque, …)
Virtualisation au niveau du système
d’exploitation
Machine invité (machine virtuelle) Conteneur
Image ISO Librairies nécessaires
Machine hôte Moteur de conteneur
Démarrage plus lent Démarrage en quelques secondes
Entièrement isolé et donc plus sécurisé
Isolation au niveau du processus et
donc moins sécurisée
13
Conteneurisation & Virtualisation
© 2023-2024 – Module DevOps – Introduction
En utilisant à la fois des conteneurs et des machines virtuelles (VMs) :
– Vous bénéficiez d'une grande polyvalence pour répondre à différents besoins en
matière de déploiement d'applications.
– Vous optimisez l'utilisation des ressources
matérielles tout en maintenant un bon
niveau de sécurité et d'isolation pour vos
applications.
DEV
PROD
14
Docker - Définition
© 2023-2024 – Module DevOps – Introduction
– Docker est un logiciel créé par Solomon Hykes et développé par Docker, Inc. Il
permet de créer des environnements – appelés « Containers » – permettant d’isoler
des applications.
– Il permet d’embarquer une application dans un ou plusieurs conteneurs logiciels, ce
qui lui permet de s'exécuter sur n'importe quel serveur, qu'il soit physique ou virtuel.
15
Docker - Editions
© 2023-2024 – Module DevOps – Introduction
– Docker propose deux éditions distinctes, qui offrent des fonctionnalités adaptées à
différents besoins :
○ Version Communauté (Community Edition : CE) :
Pour les utilisateurs individuels et les petites
équipes. Elle offre les bases de Docker.
○ Version Entreprise (Entreprise Edition : EE) : Pour
les grandes organisations. Elle inclut des
fonctionnalités avancées et un support technique.
16
Docker - Lexique
© 2023-2024 – Module DevOps – Introduction
– Image : template de conteneur en read-only contenant un système de base et une
application. Il contient tous les fichiers et dépendances nécessaires à l'exécution
d'une application.
– Conteneur : Image exécutable d’un environnement complet incluant code,
librairies, outils et configuration.
→ Un conteneur est une instance d’une image exécutée
– Docker HUB : Dépôt public d’images mises à disposition par Docker
○ DockerHub (https://store.docker.com)
17
Docker - Lexique
© 2023-2024 – Module DevOps – Introduction
– Dockerfile : fichier texte de description d’une image
– Docker Machine : Outil de déploiement des hôtes Docker sur différentes
plateformes (Mac, Windows) : https://docs.docker.com/machine/overview/
– Registry : Dépôt privé d’images Docker
18
Docker - Statistiques
© 2023-2024 – Module DevOps – Introduction
19
Docker - Avantages
© 2023-2024 – Module DevOps – Introduction
– Flexible : Même les applications les plus complexes peuvent être conteneurisées.
– Léger : Les conteneurs exploitent et partagent l’OS hôte, ce qui les rend beaucoup
plus efficaces en termes de ressources système que les machines virtuelles.
– Portable : Moins de dépendances avec la machine hôte.
– Faiblement couplé : Les conteneurs sont hautement autonomes et encapsulés, ce
qui vous permet de remplacer ou de mettre à niveau l’un sans en perturber les
autres.
– Évolutif : Vous pouvez augmenter et distribuer automatiquement les répliques de
conteneurs dans un centre de données.
20
Docker - Inconvénients
© 2023-2024 – Module DevOps – Introduction
– Docker présente quelques inconvénients parmi lesquelles nous pouvons citer :
✔ La difficulté de gérer plusieurs conteneurs simultanément
✔ Possible failles de sécurité (conteneurs partagent le même système
d’exploitation)
21
Docker Engine
© 2023-2024 – Module DevOps – Introduction
Docker Engine est le cœur de Docker, responsable de l'exécution des conteneurs.
● Docker Daemon : Le service en arrière-plan qui gère les
opérations de conteneurisation sur le système hôte.
● Docker CLI (Command Line Interface) : L'interface en ligne
de commande permettant aux utilisateurs d'interagir avec
le démon Docker pour créer, gérer et exécuter des
conteneurs.
● Docker API : Une interface de programmation permettant
aux applications de communiquer avec le démon Docker.
22
Docker - Architecture
© 2023-2024 – Module DevOps – Introduction
23
Docker - Workflow et Commandes
© 2023-2024 – Module DevOps – Introduction
24
Docker - Installation
© 2023-2024 – Module DevOps – Introduction
– Allez dans le répertoire de votre machine virtuelle Ubuntu, démarrez la machine
virtuelle (vagrant up) et ouvrez un terminal (vagrant ssh).
25
Docker - Installation
© 2023-2024 – Module DevOps – Introduction
– Pour installer Docker, exécutez les commandes suivantes :
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o
/etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo 
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg]
https://download.docker.com/linux/ubuntu 
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | 
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin
docker-compose-plugin
sudo service docker start
sudo service docker enable
26
© 2023-2024 – Module DevOps – Introduction
– Docker est déjà en cours d'exécution après l'installation. Pour vérifier son état,
utilisez la commande suivante : sudo systemctl status docker
– CTRL C pour sortir de la commande de status
Docker - Installation
27
© 2023-2024 – Module DevOps – Introduction
– Pour accorder des droits de lecture et d'écriture (mais pas d'exécution) à l'utilisateur
"vagrant", à son groupe et à tout autre utilisateur(6 = (R=1 / W=1 X=0)) sur le fichier
/var/run/docker.sock, utilisez la commande suivante :
sudo chmod 666 /var/run/docker.sock
– Pour vous assurer que tout fonctionne correctement, vous pouvez vérifier la version de
Docker et exécuter l'image "hello-world" (qui sera automatiquement téléchargée
depuis Docker Hub) en utilisant les commandes suivantes :
○ Pour vérifier la version de Docker : docker -v
○ Pour exécuter l'image "hello-world" : docker run hello-world
Docker - Installation
28
© 2023-2024 – Module DevOps – Introduction
Docker - Installation
29
© 2023-2024 – Module DevOps – Introduction
– Pour importer une image, vous avez plusieurs options :
○ Docker Hub : Importer une image depuis le référentiel cloud Docker.
○ Utiliser un fichier Dockerfile : Créer une image en utilisant un fichier
Dockerfile et les commandes associées.
○ À partir d'un registre local : Importer une image à partir d'un registre
local, sans accéder au cloud.
○ À partir d'un conteneur : Créer une nouvelle image à partir d'un
conteneur existant, en prenant le contenu du conteneur pour créer
une nouvelle image ( Image => conteneur => image).
Docker - Manipulation
30
© 2023-2024 – Module DevOps – Introduction
– Docker Hub est le registre officiel de Docker.
– C’est un service SaaS (Software As A Service ou logiciel en tant que service) qui
rassemble des applications sous forme de conteneurs (images). Ces images sont créées
par des développeurs et des opérationnels et sont accessibles à tous.
– Docker lui-même peut également fournir ces images.
– Vous avez la possibilité de télécharger ces images et de partager les vôtres.
Docker - Docker Hub
31
© 2023-2024 – Module DevOps – Introduction
– Un Dockerfile est un fichier texte contenant les commandes que l'on utiliserait
en ligne de commande pour créer notre propre image.
– Il part d'une image de base standard à laquelle nous ajoutons les éléments
spécifiques à l'application que nous souhaitons déployer. Créons le Dockerfile :
Docker - Docker File
Dockerfile
32
© 2023-2024 – Module DevOps – Introduction
Docker - Docker File
33
© 2023-2024 – Module DevOps – Introduction
Docker - Docker File
Les instructions de base que peut contenir un DockerFile sont les suivantes :
o FROM permet de définir depuis quelle base votre image va être créée
o LABEL permet de définir l’auteur de l’image
o RUN permet de lancer une commande
o ADD permet de copier un fichier depuis la machine hôte ou depuis une URL
o EXPOSE permet d’exposer un port du container vers l’extérieur
o CMD détermine la commande qui sera exécutée lorsque le container démarrera
o ENTRYPOINT permet d’ajouter une commande qui sera exécutée par défaut
o WORKDIR permet de définir le dossier de travail pour toutes les autres commandes
o ENV permet de définir des variables d’environnements
o VOLUMES permet de créer un point de montage qui permettra de persister les données
34
© 2023-2024 – Module DevOps – Introduction
– Pour construire l'image Docker définie dans le fichier Dockerfile ci-dessus
docker build -t "Nom_de_l'image_à_créer" "Chemin_vers_le_fichier"
– Vous pouvez spécifier "." (un point) si le fichier Dockerfile se trouve dans le répertoire courant.
– Si vous n'utilisez pas le nom de fichier Dockerfile par défaut, l'option -f est requise.
– Dans le nom de l'image à créer, vous devez spécifier votre nom d'utilisateur sur Docker Hub
pour pouvoir envoyer votre image sur Docker Hub (par exemple, "bensalahons/alpine").
Création d'une image à partir d'un Dockerfile
35
© 2023-2024 – Module DevOps – Introduction
Création d'une image à partir d'un Dockerfile
– A partir de l'image officielle d'Alpine (sur Docker Hub), nous allons créer notre propre image
personnalisée "alpine:1.0.0" avec Java 11.
36
© 2023-2024 – Module DevOps – Introduction
– Pour extraire une image ou un référentiel d’un registre Docker, tapez la commande suivante :
docker pull "nom_de_l'image":"version"
→ Si vous ne spécifiez pas la version, Docker télécharge automatiquement la dernière
version.
Docker - Commandes de base
37
© 2023-2024 – Module DevOps – Introduction
Pour créer un conteneur, utilisez la commande suivante : docker run "nom_de_l'image"
→ Si Docker ne trouve pas l'image localement, il la télécharge automatiquement depuis
Docker Hub, puis crée le conteneur.
Docker - Commandes de base
38
© 2023-2024 – Module DevOps – Introduction
Docker - Commandes de base
Source : Run a single task “Hello World”
39
© 2023-2024 – Module DevOps – Introduction
– Pour récupérer la liste des images, tapez la commande : docker images
Docker - Commandes de base
40
© 2023-2024 – Module DevOps – Introduction
– Pour obtenir plus de détails sur une image Docker, exécutez la commande suivante :
docker image inspect "les_5_premières_lettres_de_l'ID_de_l'image"
Docker - Commandes de base
41
© 2023-2024 – Module DevOps – Introduction
– Pour récupérer la liste des conteneurs (y compris ceux arrêtés), vous pouvez
utiliser les commandes suivantes :
docker container ls -a ou bien docker ps -a
– Pour obtenir la liste des conteneurs actifs (ceux qui sont en cours d'exécution) :
docker ps
Docker - Commandes de base
→ Pourquoi on peut pas observer le conteneur associé à l'image alpine:1.0.0 ?
42
© 2023-2024 – Module DevOps – Introduction
– Lancer un conteneur en arrière-plan (en utilisant l'option -d : docker run -itd)
pour y accéder ultérieurement :
– La commande ci-dessous démarre un conteneur et exécute un client SSH à
l'intérieur.
Docker - Commandes de base
43
© 2023-2024 – Module DevOps – Introduction
– Pour accéder à un conteneur déjà en cours d'exécution (en utilisant docker
exec), vous pouvez interagir avec le conteneur comme si vous étiez dans une
machine virtuelle ou un serveur Linux :
Docker - Commandes de base
44
© 2023-2024 – Module DevOps – Introduction
– Pour supprimer une image, vous pouvez utiliser l'une des deux commandes suivantes :
docker image rm "nom_image" --force
ou docker rmi "nom_image" --force
Docker - Commandes de base
45
© 2023-2024 – Module DevOps – Introduction
– Pour supprimer un conteneur, utilisez la commande : docker rm "ID_du_conteneur"
Docker - Commandes de base
46
© 2023-2024 – Module DevOps – Introduction
– Si ce n'est pas déjà fait, créez un compte sur Docker Hub à l'adresse
https://hub.docker.com, puis connectez-vous en utilisant la commande :
docker login
Docker - Commandes de base
47
© 2023-2024 – Module DevOps – Introduction
– Pour envoyer une image que vous avez créée vers Docker Hub, utilisez la
commande : docker push
Docker - Commandes de base
48
© 2023-2024 – Module DevOps – Introduction
Docker - Commandes de base
"Apprendre par le projet, c'est découvrir
par l'action, créer par la compréhension, et
réussir par la persévérance."
ESPRIT – UP ASI (Architecture des Systèmes d’Information)
Bureau E204
nous supportons les objectifs de développement durable

Contenu connexe

Tendances

DEVOPS - La synthèse
DEVOPS - La synthèseDEVOPS - La synthèse
DEVOPS - La synthèseCOMPETENSIS
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation ConteneurisationTADx
 
Créer une application Cloud native_v7.pdf
Créer une application Cloud native_v7.pdfCréer une application Cloud native_v7.pdf
Créer une application Cloud native_v7.pdfKhalidKadmiri
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec dockergcatt
 
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
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche DevopsRomain Chalumeau
 
Devops - vision et pratiques
Devops - vision et pratiquesDevops - vision et pratiques
Devops - vision et pratiquesJoseph Glorieux
 
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
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
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 DevOpsPublicis Sapient Engineering
 
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 applicationsStephane Woillez
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with DockerRavindu Fernando
 
Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...
Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...
Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...Michel-Marie Maudet
 
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
 
Docker intro
Docker introDocker intro
Docker introOleg Z
 

Tendances (20)

Intro to docker
Intro to dockerIntro to docker
Intro to docker
 
Docker
DockerDocker
Docker
 
DEVOPS - La synthèse
DEVOPS - La synthèseDEVOPS - La synthèse
DEVOPS - La synthèse
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
Créer une application Cloud native_v7.pdf
Créer une application Cloud native_v7.pdfCréer une application Cloud native_v7.pdf
Créer une application Cloud native_v7.pdf
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec docker
 
Jenkins
JenkinsJenkins
Jenkins
 
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
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche Devops
 
Devops - vision et pratiques
Devops - vision et pratiquesDevops - vision et pratiques
Devops - vision et pratiques
 
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
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
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
 
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
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
 
Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...
Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...
Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...
 
Intro docker
Intro dockerIntro docker
Intro 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 intro
Docker introDocker intro
Docker intro
 

Similaire à DevOps 3 - 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 DerueAZUG FR
 
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptxAbdellahELMAMOUN
 
Gab2015 Jean-Marie Crommen Docker sur Azure
Gab2015 Jean-Marie Crommen Docker sur AzureGab2015 Jean-Marie Crommen Docker sur Azure
Gab2015 Jean-Marie Crommen Docker sur AzureVincent Thavonekham-Pro
 
A la découverte de docker, 2ème partie
A la découverte de docker, 2ème partieA la découverte de docker, 2ème partie
A la découverte de docker, 2ème partieSamuel Desseaux
 
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
 
A la découverte de docker, 1ère partie
A la découverte de docker, 1ère partieA la découverte de docker, 1ère partie
A la découverte de docker, 1ère partieSamuel Desseaux
 
Geek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerGeek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerNizar GARRACHE
 
SUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSPSUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSPSUSE
 
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
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugamine17157
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 
c13-creer-une-application-cloud-native-resume-theorique-v30-03-2023-6426a74e3...
c13-creer-une-application-cloud-native-resume-theorique-v30-03-2023-6426a74e3...c13-creer-une-application-cloud-native-resume-theorique-v30-03-2023-6426a74e3...
c13-creer-une-application-cloud-native-resume-theorique-v30-03-2023-6426a74e3...salwa benriyene
 
L'évolution vers le (Dev)NoOps
L'évolution vers le (Dev)NoOpsL'évolution vers le (Dev)NoOps
L'évolution vers le (Dev)NoOpsGeorgeot Cédric
 

Similaire à DevOps 3 - Docker.pdf (20)

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
 
What is Docker
What is Docker What is Docker
What is Docker
 
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
 
Gab2015 Jean-Marie Crommen Docker sur Azure
Gab2015 Jean-Marie Crommen Docker sur AzureGab2015 Jean-Marie Crommen Docker sur Azure
Gab2015 Jean-Marie Crommen Docker sur Azure
 
docker.pptx
docker.pptxdocker.pptx
docker.pptx
 
A la découverte de docker, 2ème partie
A la découverte de docker, 2ème partieA la découverte de docker, 2ème partie
A la découverte de docker, 2ème partie
 
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...
 
A la découverte de docker, 1ère partie
A la découverte de docker, 1ère partieA la découverte de docker, 1ère partie
A la découverte de docker, 1ère partie
 
Geek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerGeek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop Docker
 
SUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSPSUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSP
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ?
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyug
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Openstack proposition
Openstack propositionOpenstack proposition
Openstack proposition
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
Prise en main de Docker
Prise en main de DockerPrise en main de Docker
Prise en main de Docker
 
c13-creer-une-application-cloud-native-resume-theorique-v30-03-2023-6426a74e3...
c13-creer-une-application-cloud-native-resume-theorique-v30-03-2023-6426a74e3...c13-creer-une-application-cloud-native-resume-theorique-v30-03-2023-6426a74e3...
c13-creer-une-application-cloud-native-resume-theorique-v30-03-2023-6426a74e3...
 
L'évolution vers le (Dev)NoOps
L'évolution vers le (Dev)NoOpsL'évolution vers le (Dev)NoOps
L'évolution vers le (Dev)NoOps
 
Eucalyptus
EucalyptusEucalyptus
Eucalyptus
 

DevOps 3 - Docker.pdf

  • 1. Chapitre 3 : Docker ESPRIT – UP ASI (Architecture des Systèmes d’Information) Bureau E204 DevOps © 2023-2024
  • 2. 2 Plan du cours © 2023-2024 – Module DevOps – Introduction – Evolution de la machine de production – La virtualisation, la conteneurisation – La virtualisation Vs la conteneurisation – Docker • Définition et concepts • Avantages et inconvénients • Architecture de Docker • Installation • Docker Hub, Docker File, commandes de base
  • 3. 3 Evolution de la machine de production © 2023-2024 – Module DevOps – Introduction – Une seule application dans un seul serveur physique. – Limites : ○ Gaspillage de ressources ○ Manque de flexibilité ○ Complexité de la gestion ○ Redondance insuffisante ○ Coûts élevés ○ Difficultés de mise à l'échelle Architecture traditionnelle
  • 4. 4 Evolution de la machine de production © 2023-2024 – Module DevOps – Introduction – Virtualisation à base d’hyperviseur. – C’est une technologie qui permet d’exécuter plusieurs systèmes d'exploitation et applications sur un même serveur physique. – La popularité de la virtualisation a été grandement amplifiée grâce à l'émergence du cloud computing. Architecture virtuelle
  • 5. © 2023-2024 – Module DevOps – Introduction La virtualisation Louer du temps de calcul et de la capacité de stockage et le contrôle de ressources pour les applications Cloud sont réalisés en déployant une technologie de virtualisation sur les ressources du fournisseur Cloud 5 Hypervisors Virtualization overhead Virtualisation lourde Containers Elasticity and density Virtualisation légère Computing capacity and storage Accuracy of compute
  • 6. 6 © 2023-2024 – Module DevOps – Introduction – La virtualisation lourde, appelée aussi virtualisation à base d'hyperviseur : La Virtualisation lourde ○ Simulation de Machines Physiques : Elle permet de simuler une ou plusieurs machines physiques. ○ Exécution sous forme de VM : Ces machines virtuelles (VM) s'exécutent sur un serveur. ○ OS Intégré : Chaque VM intègre son propre système d'exploitation. ○ Exécution d'Applications : Les applications sont exécutées à l'intérieur de ces machines virtuelles.
  • 7. 7 © 2023-2024 – Module DevOps – Introduction Avantages des VMs : ○ Optimisation des ressources ○ Division d'une machine physique ○ Facilité de mise à l'échelle ○ VMs dans le Cloud (Azure, Amazon Web Services (AWS), VMware) ○ Élasticité rapide ○ Modèle Pay as You Go La Virtualisation lourde
  • 8. 8 © 2023-2024 – Module DevOps – Introduction Limites des VMs : ○ Chaque VM a besoin des ressources (CPU, Stockage (Disque), RAM ,Un OS invité) ○ En augmentant les VMs, on demande plus de ressources : ▪ Chaque OS invité alloue ses propres ressources → Gaspillage ▪ Portabilité d’application n’est pas garantie La Virtualisation lourde
  • 9. 9 La virtualisation légère : la conteneurisation © 2023-2024 – Module DevOps – Introduction La conteneurisation est une méthode légère et agile pour gérer la virtualisation. – Fourniture de services complets : Fournit tout ce dont une application a besoin (les services, scripts, API, librairies) afin d'économiser les ressources. – Isolation au niveau des conteneurs : Isole les applications les unes des autres, mais partage le même système d'exploitation (OS). – Partage d'OS et d'espace mémoire : Permet aux applications de coexister sur le même OS et de partager la mémoire pour économiser les ressources.
  • 10. 10 Qu’est ce qu’un Conteneur ? © 2023-2024 – Module DevOps – Introduction Enveloppe (emballage) standardisé des applications et leurs dépendances. ● Isolation des applications : Chaque application est séparée des autres pour éviter les conflits. ● Partage du noyau OS : Il partage le noyau du système d'exploitation avec le système hôte pour économiser des ressources. ● Compatible avec Linux et Windows Server : Il fonctionne sur tous les systèmes Linux et Windows Server, ce qui le rend largement pris en charge.
  • 11. 11 Conteneurisation Vs Virtualisation © 2023-2024 – Module DevOps – Introduction Machines Virtuelles (VMs) : ● Recréent un serveur complet pour chaque application, y compris son propre système d'exploitation. Conteneurs : ● Isolent chaque application, mais partagent le même système d'exploitation de l'ordinateur hôte. ● Plusieurs conteneurs peuvent partager le même système d'exploitation pour différentes tâches. VM VM VM Container
  • 12. 12 Conteneurisation Vs Virtualisation © 2023-2024 – Module DevOps – Introduction Virtualisation Conteneurisation Une virtualisation lourde Une virtualisation légère À base d’hyperviseur À base des conteneurs Virtualisation des ressources hardware (CPU, RAM, disque, …) Virtualisation au niveau du système d’exploitation Machine invité (machine virtuelle) Conteneur Image ISO Librairies nécessaires Machine hôte Moteur de conteneur Démarrage plus lent Démarrage en quelques secondes Entièrement isolé et donc plus sécurisé Isolation au niveau du processus et donc moins sécurisée
  • 13. 13 Conteneurisation & Virtualisation © 2023-2024 – Module DevOps – Introduction En utilisant à la fois des conteneurs et des machines virtuelles (VMs) : – Vous bénéficiez d'une grande polyvalence pour répondre à différents besoins en matière de déploiement d'applications. – Vous optimisez l'utilisation des ressources matérielles tout en maintenant un bon niveau de sécurité et d'isolation pour vos applications. DEV PROD
  • 14. 14 Docker - Définition © 2023-2024 – Module DevOps – Introduction – Docker est un logiciel créé par Solomon Hykes et développé par Docker, Inc. Il permet de créer des environnements – appelés « Containers » – permettant d’isoler des applications. – Il permet d’embarquer une application dans un ou plusieurs conteneurs logiciels, ce qui lui permet de s'exécuter sur n'importe quel serveur, qu'il soit physique ou virtuel.
  • 15. 15 Docker - Editions © 2023-2024 – Module DevOps – Introduction – Docker propose deux éditions distinctes, qui offrent des fonctionnalités adaptées à différents besoins : ○ Version Communauté (Community Edition : CE) : Pour les utilisateurs individuels et les petites équipes. Elle offre les bases de Docker. ○ Version Entreprise (Entreprise Edition : EE) : Pour les grandes organisations. Elle inclut des fonctionnalités avancées et un support technique.
  • 16. 16 Docker - Lexique © 2023-2024 – Module DevOps – Introduction – Image : template de conteneur en read-only contenant un système de base et une application. Il contient tous les fichiers et dépendances nécessaires à l'exécution d'une application. – Conteneur : Image exécutable d’un environnement complet incluant code, librairies, outils et configuration. → Un conteneur est une instance d’une image exécutée – Docker HUB : Dépôt public d’images mises à disposition par Docker ○ DockerHub (https://store.docker.com)
  • 17. 17 Docker - Lexique © 2023-2024 – Module DevOps – Introduction – Dockerfile : fichier texte de description d’une image – Docker Machine : Outil de déploiement des hôtes Docker sur différentes plateformes (Mac, Windows) : https://docs.docker.com/machine/overview/ – Registry : Dépôt privé d’images Docker
  • 18. 18 Docker - Statistiques © 2023-2024 – Module DevOps – Introduction
  • 19. 19 Docker - Avantages © 2023-2024 – Module DevOps – Introduction – Flexible : Même les applications les plus complexes peuvent être conteneurisées. – Léger : Les conteneurs exploitent et partagent l’OS hôte, ce qui les rend beaucoup plus efficaces en termes de ressources système que les machines virtuelles. – Portable : Moins de dépendances avec la machine hôte. – Faiblement couplé : Les conteneurs sont hautement autonomes et encapsulés, ce qui vous permet de remplacer ou de mettre à niveau l’un sans en perturber les autres. – Évolutif : Vous pouvez augmenter et distribuer automatiquement les répliques de conteneurs dans un centre de données.
  • 20. 20 Docker - Inconvénients © 2023-2024 – Module DevOps – Introduction – Docker présente quelques inconvénients parmi lesquelles nous pouvons citer : ✔ La difficulté de gérer plusieurs conteneurs simultanément ✔ Possible failles de sécurité (conteneurs partagent le même système d’exploitation)
  • 21. 21 Docker Engine © 2023-2024 – Module DevOps – Introduction Docker Engine est le cœur de Docker, responsable de l'exécution des conteneurs. ● Docker Daemon : Le service en arrière-plan qui gère les opérations de conteneurisation sur le système hôte. ● Docker CLI (Command Line Interface) : L'interface en ligne de commande permettant aux utilisateurs d'interagir avec le démon Docker pour créer, gérer et exécuter des conteneurs. ● Docker API : Une interface de programmation permettant aux applications de communiquer avec le démon Docker.
  • 22. 22 Docker - Architecture © 2023-2024 – Module DevOps – Introduction
  • 23. 23 Docker - Workflow et Commandes © 2023-2024 – Module DevOps – Introduction
  • 24. 24 Docker - Installation © 2023-2024 – Module DevOps – Introduction – Allez dans le répertoire de votre machine virtuelle Ubuntu, démarrez la machine virtuelle (vagrant up) et ouvrez un terminal (vagrant ssh).
  • 25. 25 Docker - Installation © 2023-2024 – Module DevOps – Introduction – Pour installer Docker, exécutez les commandes suivantes : sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo service docker start sudo service docker enable
  • 26. 26 © 2023-2024 – Module DevOps – Introduction – Docker est déjà en cours d'exécution après l'installation. Pour vérifier son état, utilisez la commande suivante : sudo systemctl status docker – CTRL C pour sortir de la commande de status Docker - Installation
  • 27. 27 © 2023-2024 – Module DevOps – Introduction – Pour accorder des droits de lecture et d'écriture (mais pas d'exécution) à l'utilisateur "vagrant", à son groupe et à tout autre utilisateur(6 = (R=1 / W=1 X=0)) sur le fichier /var/run/docker.sock, utilisez la commande suivante : sudo chmod 666 /var/run/docker.sock – Pour vous assurer que tout fonctionne correctement, vous pouvez vérifier la version de Docker et exécuter l'image "hello-world" (qui sera automatiquement téléchargée depuis Docker Hub) en utilisant les commandes suivantes : ○ Pour vérifier la version de Docker : docker -v ○ Pour exécuter l'image "hello-world" : docker run hello-world Docker - Installation
  • 28. 28 © 2023-2024 – Module DevOps – Introduction Docker - Installation
  • 29. 29 © 2023-2024 – Module DevOps – Introduction – Pour importer une image, vous avez plusieurs options : ○ Docker Hub : Importer une image depuis le référentiel cloud Docker. ○ Utiliser un fichier Dockerfile : Créer une image en utilisant un fichier Dockerfile et les commandes associées. ○ À partir d'un registre local : Importer une image à partir d'un registre local, sans accéder au cloud. ○ À partir d'un conteneur : Créer une nouvelle image à partir d'un conteneur existant, en prenant le contenu du conteneur pour créer une nouvelle image ( Image => conteneur => image). Docker - Manipulation
  • 30. 30 © 2023-2024 – Module DevOps – Introduction – Docker Hub est le registre officiel de Docker. – C’est un service SaaS (Software As A Service ou logiciel en tant que service) qui rassemble des applications sous forme de conteneurs (images). Ces images sont créées par des développeurs et des opérationnels et sont accessibles à tous. – Docker lui-même peut également fournir ces images. – Vous avez la possibilité de télécharger ces images et de partager les vôtres. Docker - Docker Hub
  • 31. 31 © 2023-2024 – Module DevOps – Introduction – Un Dockerfile est un fichier texte contenant les commandes que l'on utiliserait en ligne de commande pour créer notre propre image. – Il part d'une image de base standard à laquelle nous ajoutons les éléments spécifiques à l'application que nous souhaitons déployer. Créons le Dockerfile : Docker - Docker File Dockerfile
  • 32. 32 © 2023-2024 – Module DevOps – Introduction Docker - Docker File
  • 33. 33 © 2023-2024 – Module DevOps – Introduction Docker - Docker File Les instructions de base que peut contenir un DockerFile sont les suivantes : o FROM permet de définir depuis quelle base votre image va être créée o LABEL permet de définir l’auteur de l’image o RUN permet de lancer une commande o ADD permet de copier un fichier depuis la machine hôte ou depuis une URL o EXPOSE permet d’exposer un port du container vers l’extérieur o CMD détermine la commande qui sera exécutée lorsque le container démarrera o ENTRYPOINT permet d’ajouter une commande qui sera exécutée par défaut o WORKDIR permet de définir le dossier de travail pour toutes les autres commandes o ENV permet de définir des variables d’environnements o VOLUMES permet de créer un point de montage qui permettra de persister les données
  • 34. 34 © 2023-2024 – Module DevOps – Introduction – Pour construire l'image Docker définie dans le fichier Dockerfile ci-dessus docker build -t "Nom_de_l'image_à_créer" "Chemin_vers_le_fichier" – Vous pouvez spécifier "." (un point) si le fichier Dockerfile se trouve dans le répertoire courant. – Si vous n'utilisez pas le nom de fichier Dockerfile par défaut, l'option -f est requise. – Dans le nom de l'image à créer, vous devez spécifier votre nom d'utilisateur sur Docker Hub pour pouvoir envoyer votre image sur Docker Hub (par exemple, "bensalahons/alpine"). Création d'une image à partir d'un Dockerfile
  • 35. 35 © 2023-2024 – Module DevOps – Introduction Création d'une image à partir d'un Dockerfile – A partir de l'image officielle d'Alpine (sur Docker Hub), nous allons créer notre propre image personnalisée "alpine:1.0.0" avec Java 11.
  • 36. 36 © 2023-2024 – Module DevOps – Introduction – Pour extraire une image ou un référentiel d’un registre Docker, tapez la commande suivante : docker pull "nom_de_l'image":"version" → Si vous ne spécifiez pas la version, Docker télécharge automatiquement la dernière version. Docker - Commandes de base
  • 37. 37 © 2023-2024 – Module DevOps – Introduction Pour créer un conteneur, utilisez la commande suivante : docker run "nom_de_l'image" → Si Docker ne trouve pas l'image localement, il la télécharge automatiquement depuis Docker Hub, puis crée le conteneur. Docker - Commandes de base
  • 38. 38 © 2023-2024 – Module DevOps – Introduction Docker - Commandes de base Source : Run a single task “Hello World”
  • 39. 39 © 2023-2024 – Module DevOps – Introduction – Pour récupérer la liste des images, tapez la commande : docker images Docker - Commandes de base
  • 40. 40 © 2023-2024 – Module DevOps – Introduction – Pour obtenir plus de détails sur une image Docker, exécutez la commande suivante : docker image inspect "les_5_premières_lettres_de_l'ID_de_l'image" Docker - Commandes de base
  • 41. 41 © 2023-2024 – Module DevOps – Introduction – Pour récupérer la liste des conteneurs (y compris ceux arrêtés), vous pouvez utiliser les commandes suivantes : docker container ls -a ou bien docker ps -a – Pour obtenir la liste des conteneurs actifs (ceux qui sont en cours d'exécution) : docker ps Docker - Commandes de base → Pourquoi on peut pas observer le conteneur associé à l'image alpine:1.0.0 ?
  • 42. 42 © 2023-2024 – Module DevOps – Introduction – Lancer un conteneur en arrière-plan (en utilisant l'option -d : docker run -itd) pour y accéder ultérieurement : – La commande ci-dessous démarre un conteneur et exécute un client SSH à l'intérieur. Docker - Commandes de base
  • 43. 43 © 2023-2024 – Module DevOps – Introduction – Pour accéder à un conteneur déjà en cours d'exécution (en utilisant docker exec), vous pouvez interagir avec le conteneur comme si vous étiez dans une machine virtuelle ou un serveur Linux : Docker - Commandes de base
  • 44. 44 © 2023-2024 – Module DevOps – Introduction – Pour supprimer une image, vous pouvez utiliser l'une des deux commandes suivantes : docker image rm "nom_image" --force ou docker rmi "nom_image" --force Docker - Commandes de base
  • 45. 45 © 2023-2024 – Module DevOps – Introduction – Pour supprimer un conteneur, utilisez la commande : docker rm "ID_du_conteneur" Docker - Commandes de base
  • 46. 46 © 2023-2024 – Module DevOps – Introduction – Si ce n'est pas déjà fait, créez un compte sur Docker Hub à l'adresse https://hub.docker.com, puis connectez-vous en utilisant la commande : docker login Docker - Commandes de base
  • 47. 47 © 2023-2024 – Module DevOps – Introduction – Pour envoyer une image que vous avez créée vers Docker Hub, utilisez la commande : docker push Docker - Commandes de base
  • 48. 48 © 2023-2024 – Module DevOps – Introduction Docker - Commandes de base
  • 49. "Apprendre par le projet, c'est découvrir par l'action, créer par la compréhension, et réussir par la persévérance." ESPRIT – UP ASI (Architecture des Systèmes d’Information) Bureau E204 nous supportons les objectifs de développement durable