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 :
      docker images
    • Supprimer une image :
      docker rmi nom_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 :
      docker ps
    • ArrĂȘter un conteneur :
      docker stop id_conteneur
    • Supprimer un conteneur :
      docker rm id_conteneur

Exercice pratique 1 : Conteneuriser TaskManagerPro

  1. 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"]
  2. Construire l’image Docker :

    • Depuis le rĂ©pertoire TaskManagerPro/backend, exĂ©cutez :
      docker build -t taskmanagerpro-backend .
  3. 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

  1. Installer Minikube :

    • Installez Minikube pour crĂ©er un cluster Kubernetes local :
      sudo apt update && sudo apt install -y minikube
    • Lancez Minikube :
      minikube start
  2. 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
  3. Appliquer le déploiement :

    • DĂ©ployez l’application sur Kubernetes :
      kubectl apply -f deployment.yml
  4. 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
  5. 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 !