Conteneurs et orchestration
Apprendre à créer et gérer des conteneurs Docker pour déployer des applications.
Module 4 : Conteneurs et orchestration
4.1. Docker : Comprendre et utiliser les conteneurs
Objectif : Apprendre à créer et gérer des conteneurs Docker pour déployer des applications.
Cours : Concepts fondamentaux de Docker
1. Qu'est-ce que Docker ?
- DĂ©finition : Docker est un outil permettant de crĂ©er, dâexĂ©cuter et de gĂ©rer des conteneurs, des environnements isolĂ©s pour exĂ©cuter des applications.
- Avantages :
- Portabilité : Fonctionne sur toutes les plateformes supportant Docker.
- Isolation : Chaque conteneur a son propre environnement.
- ScalabilitĂ© : Facilite la mise Ă lâĂ©chelle horizontale.
2. Composants clés :
- Image : ModÚle statique pour créer des conteneurs.
- Conteneur : Instance exécutable d'une image.
- Dockerfile : Fichier de configuration pour créer des images Docker.
- Registry : DépÎt pour stocker et partager des images Docker (ex. Docker Hub).
3. Commandes Docker essentielles :
-
Images :
- Construire une image :
docker build -t nom_image .
- Lister les images disponibles :
- Supprimer une image :
-
Conteneurs :
- Créer et démarrer un conteneur :
docker run -d -p 8080:3000 nom_image
- Lister les conteneurs en cours dâexĂ©cution :
- ArrĂȘter un conteneur :
- Supprimer un conteneur :
Exercice pratique 1 : Conteneuriser TaskManagerPro
-
Créer un Dockerfile pour le backend :
- Dans le répertoire
TaskManagerPro/backend, créez un fichier nommé Dockerfile :
FROM node:18
# Créer un répertoire de travail
WORKDIR /app
# Copier les fichiers package.json et package-lock.json
COPY package*.json ./
# Installer les dépendances
RUN npm install
# Copier le reste du code
COPY . .
# Exposer le port de l'application
EXPOSE 3000
# Commande par défaut
CMD ["npm", "start"]
-
Construire lâimage Docker :
- Depuis le répertoire
TaskManagerPro/backend, exécutez :
docker build -t taskmanagerpro-backend .
-
Démarrer un conteneur :
- Lancez un conteneur basĂ© sur lâimage construite :
docker run -d -p 3000:3000 taskmanagerpro-backend
- AccĂ©dez Ă lâapplication via
http://localhost:3000.
4.2. Kubernetes : Orchestration de conteneurs
Objectif : Utiliser Kubernetes pour déployer et gérer des applications conteneurisées de maniÚre scalable.
Cours : Concepts clés de Kubernetes
1. Qu'est-ce que Kubernetes ?
- DĂ©finition : Kubernetes (K8s) est une plateforme d'orchestration pour dĂ©ployer, gĂ©rer et mettre Ă lâĂ©chelle des conteneurs.
- Fonctionnalités :
- Gestion des pods (groupes de conteneurs).
- Mise Ă lâĂ©chelle automatique.
- Ăquilibrage de charge.
- Reprise automatique aprĂšs panne.
2. Composants principaux :
- Pod : LâunitĂ© de base de dĂ©ploiement, regroupant un ou plusieurs conteneurs.
- Service : Point dâaccĂšs rĂ©seau pour un ensemble de pods.
- Ingress : GĂšre lâaccĂšs HTTP/HTTPS externe.
- Deployment : ContrĂŽle les mises Ă jour des pods.
- Namespace : Permet de regrouper des ressources isolées.
Exercice pratique 2 : Déployer TaskManagerPro sur un cluster Kubernetes
-
Installer Minikube :
- Installez Minikube pour créer un cluster Kubernetes local :
sudo apt update && sudo apt install -y minikube
- Lancez Minikube :
-
Créer un fichier de déploiement :
- Dans le répertoire
TaskManagerPro, créez un fichier deployment.yml :
apiVersion: apps/v1
kind: Deployment
metadata:
name: taskmanagerpro-backend
spec:
replicas: 2
selector:
matchLabels:
app: taskmanagerpro-backend
template:
metadata:
labels:
app: taskmanagerpro-backend
spec:
containers:
- name: backend
image: taskmanagerpro-backend
ports:
- containerPort: 3000
-
Appliquer le déploiement :
- DĂ©ployez lâapplication sur Kubernetes :
kubectl apply -f deployment.yml
-
Exposer lâapplication :
- CrĂ©ez un service pour rendre lâapplication accessible :
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
selector:
app: taskmanagerpro-backend
ports:
- protocol: TCP
port: 3000
targetPort: 3000
type: LoadBalancer
- Appliquez le service :
kubectl apply -f service.yml
-
Tester lâapplication :
- RĂ©cupĂ©rez lâURL publique :
minikube service backend-service --url
- AccĂ©dez Ă lâapplication via lâURL affichĂ©e.
đ Quiz : Teste tes connaissances !
đ„ïž Terminal Trainer : Pratique tes commandes !