2. PLAN DU COURS
Problématique
Docker Images et Conteneurs
Gestion des Conteneurs
Dockerfile
Volumes et Persistance des Données
Docker Compose
Publication d'Images sur Docker Hub
Qu'est-ce que Docker ?
Conteneurs vs Machines Virtuelles
Origine de Docker
3. PROBLÉMATIQUE
La problématique principale avec Docker
est que, lorsqu'un développeur crée un
projet et tente de l'exécuter sur une autre
machine, il peut rencontrer des erreurs.
Ces erreurs surviennent généralement en
raison de différences dans les
environnements d'exécution entre les
machines.
4. DÉFINITION
Docker est un outil de conteneurisation
permettant de regrouper une application
et ses dépendances dans un
environnement isolé.
5. ORIGINE DE DOCKER
Docker est basé sur des
technologies de
conteneurisation Linux (LXC) et
qu'il a été développé par
DotCloud (devenue Docker
Inc.).
8. AVANTAGES D’UTILISATION DOCKER
Isolation des applications : Docker permet
d'exécuter plusieurs applications en parallèle sans
conflits de dépendances.
Portabilité : Les conteneurs Docker peuvent être
exécutés sur n'importe quel système compatible,
garantissant une exécution cohérente partout.
9. Déploiement simplifié : Docker facilite le
déploiement d'applications .
Légèreté : Les conteneurs partagent le noyau du
système d'exploitation de l'hôte, ce qui les rend
beaucoup plus légers que les machines virtuelles.
Cela permet de démarrer des conteneurs
rapidement et d'utiliser moins de ressources.
15. docker run nginx
Cette commande exécute un conteneur
basé sur l'image Nginx.
EXEMPLE DE COMMANDE
18. DOCKER
HUB
Un registre pour stocker et partager des images
Docker.
Il existe des images publiques (par exemple, Nginx)
et des images privées pour des projets spécifiques.
19. COMMENT TÉLÉCHARGER
UNE IMAGE
docker pull nginx
Cette commande télécharge l'image
Nginx depuis Docker Hub.
docker images
Cette commande affiche les images
disponibles localement.
21. GESTION DES CONTENEURS DOCKER
Créer et exécuter un conteneur :
docker run -d -p 8080:80 nginx
Cette commande démarre un conteneur et expose
le port 80 du conteneur sur le port 8080 de l’hôte.
Lister les conteneurs :
docker ps (contient les conteneurs actifs)
docker ps -a (tous les conteneurs, y compris ceux
arrêtés)
Arrêter un conteneur :
docker stop <container_id>
Supprimer un conteneur :
docker rm <container_id>
24. INTRODUCTION
AU DOCKERFILE
Un Dockerfile contient les instructions permettant de construire
une image Docker. Il automatise le processus de création
d’images.
Instructions de base
FROM : Déclare l’image de base.
RUN : Exécute des commandes dans le conteneur.
COPY : Copie des fichiers dans le conteneur.
CMD : Déclare la commande par défaut à exécuter lors du
démarrage du conteneur.
25. FROM ubuntu
RUN apt-get update && apt-get install -y nginx
COPY ./index.html ./index.php
CMD ["nginx", "-g", "daemon off;"]
EXEMPLE DE DOCKERFILE
26. Construire une image personnalisée :
docker build -t custom-nginx .
Cette commande construit une image à partir d’un
Dockerfile situé dans le répertoire courant (.) et la tag
avec le nom custom-nginx.
Vérifier la construction :
docker images
Affiche l’image personnalisée nouvellement créée.
Exécuter l’image personnalisée :
docker run -d -p 8080:80 custom-nginx
CRÉER DES IMAGES PERSONNALISÉES
30. RÉSUMÉ
Les images Docker sont des modèles utilisés
pour créer des conteneurs.
Les conteneurs sont des environnements
isolés où les applications s'exécutent.
Le Dockerfile permet d'automatiser la
création d'images personnalisées.
31. DOCKER
COMPOSE
un outil puissant qui permet de gérer des
applications complexes composées de plusieurs
conteneurs.
En utilisant un seul fichier de configuration, nous
pouvons orchestrer plusieurs services à la fois.
32. ORCHESTRATION DES CONTENEURS AVEC
DOCKER COMPOSE
Avec Docker Compose, nous définissons
l’ensemble des conteneurs et services dans un
fichier appelé docker-compose.yml.
Ce fichier utilise un format YAML pour décrire
comment chaque service (conteneur) doit être
configuré, quels ports exposer, quels volumes
monter, et quelles dépendances existent entre les
conteneurs.
34. Prenons un exemple d'une
application web qui repose sur une
base de données. Voici un extrait
typique d'un fichier docker-
compose.yml
Cet exemple décrit deux services :
web : un conteneur Nginx
exposé sur le port 8080.
db : un conteneur MySQL avec
une variable d'environnement
définissant le mot de passe du
root.
EXEMPLE:
35. On peut simplifier le travail avec :
docker-compose up
Cette simple commande permet de démarrer
les deux conteneurs et de les faire fonctionner
ensemble.
EXEMPLE:
36. VOLUMES ET PERSISTANCE
DES DONNÉE
Par défaut, dans Docker, les conteneurs sont
temporaires. Cela implique qu'en cas d'arrêt ou de
suppression d'un conteneur, toutes les informations
qu'il renferme sont également perdues.
Afin de prévenir cela, Docker met en place un
système appelé volumes, qui permet de stocker les
données sur le disque, même lorsque les conteneurs
sont recréés.
37. VOLUMES DOCKER : LA SOLUTION RECOMMANDÉE POUR UNE
PERSISTANCE DES DONNÉES FIABLE
Les volumes sont la méthode
recommandée pour stocker des données
persistantes, car ils sont gérés par Docker
et peuvent être partagés entre divers
conteneurs.
Ils offrent aussi la possibilité de séparer
les données de l'infrastructure des
conteneurs, assurant ainsi la disponibilité
des données, même en cas de
redémarrage ou de recréation des
conteneurs.
38. EXEMPLE:
Voici comment créer un volume et l'utiliser dans un
conteneur :
docker volume create my_volume
docker run -d --name mysql-container --mount
source=my_volume,target=/var/lib/mysql mysql
Dans cet exemple, nous avons créé un volume appelé
my_volume, qui est monté dans le conteneur MySQL à
l'emplacement où sont stockées les données de la base
de données.
39. PUBLICATION D'IMAGES SUR DOCKER HUB VIA
AWS ELASTIC CONTAINER REGISTRY (ECR)
commonçons d’aprd avec le Processus de Création d'un
Conteneur (Workflow Local avec Docker)
40. LE PROCESSUS DE CRÉATION D'UN CONTENEUR (WORKFLOW
LOCAL AVEC DOCKER)
1.Coder votre application
2.Écrire des Dockerfiles
3.Créer des images Docker
4.Définir les services (optionnel)
5.Exécuter les conteneurs
6.Tester l'application ou les microservices
7.Pousser ou continuer à développer :
Si les tests sont concluants, vous poussez l’image
Docker vers un registre comme Docker Hub ou AWS
ECR pour une utilisation en production.
41. ÉTAPES POUR PUBLIER SUR ECR VIA AWS :
La plateforme Docker Hub est l'une des plus utilisées pour
partager des images Docker. Toutefois, sur AWS, il est
également possible d'utiliser Amazon Elastic Container
Registry (ECR), un service entièrement géré qui simplifie le
stockage, le partage et le déploiement d'images Docker
dans des environnements sécurisés.
42. ÉTAPES POUR PUBLIER SUR ECR VIA AWS :
Après avoir validé votre image Docker localement, vous pouvez la
publier sur ‘AWS ECR’ en suivant ces étapes :
1.Authentification avec AWS CLI
Utilisez la commande suivante pour vous authentifier à AWS :
aws ecr get-login-password --region us-east-1 | docker
login --username AWS --password-stdin
<aws_account_id>.dkr.ecr.us-east-1.amazonaws.com
1.Tagger l'image Docker
Assignez un tag à votre image pour la préparer à être poussée
vers le registre ECR :
docker tag my_image:latest
<aws_account_id>.dkr.ecr.useastamazonaws.com/my_im
age:latest
43. 3. Pousser l'image vers ECR
Envoyez votre image vers le registre AWS ECR :
docker push <aws_account_id>.dkr.ecr.us-east-
1.amazonaws.com/my_image:latest
4. Déployer dans AWS
Une fois l’image sur ECR, vous pouvez l’utiliser pour déployer
votre application dans des servicestels que Amazon ECS(Elastic
Container Service) ou Amazon EKS (Elastic Kubernetes Service),
facilitant ainsi la gestion et l'orchestration de vos conteneurs
dans un environnement cloud sécurisé.
ÉTAPES POUR PUBLIER SUR ECR VIA AWS :
45. Docker Compose simplifie l'orchestration des applications multi-
conteneurs en utilisant un fichier de configuration unique. En
parallèle, les volumes permettent de gérer efficacement la
persistance des données. Enfin, grâce à des services comme AWS
Elastic Container Registry, vous pouvez partager vos images
Docker dans des environnements sécurisés et flexibles, adaptés à
une échelle industrielle.
CONCLUSION :