Orchestration avec Docker Swarm

Découvrez comment utiliser Docker Swarm pour orchestrer et gérer des clusters de conteneurs Docker.

Docker Swarm est un outil d'orchestration de conteneurs qui permet de gérer un groupe de machines Docker (nœuds) comme un seul cluster virtuel. C'est une solution native de Docker pour la haute disponibilité et la scalabilité.

Initialisation de Docker Swarm

Pour initialiser un cluster Docker Swarm :

docker swarm init

Cette commande doit être exécutée sur la machine qui sera le manager principal du Swarm. Elle configure le nœud actuel en tant que manager et génère un jeton d'adhésion pour les nœuds worker.

Préparation de l'Application

Dockerfile et Images

Docker Swarm ne construit pas d'images, donc vous devez construire votre image et la pousser sur un registre d'images comme Docker Hub.

docker build -t mon_nom_utilisateur/monapp:tag .
docker push mon_nom_utilisateur/monapp:tag

Adapter docker-compose.yml pour Swarm

Le fichier docker-compose.yml doit être adapté pour Swarm, notamment en ajoutant une section deploy pour les services.

version: '3.8'
services:
  web:
    image: mon_nom_utilisateur/monapp:tag
    deploy:
      replicas: 3
      ...

Commandes Clés d'Administration

  • Lister les Services :
    docker service ls
  • Voir les Détails d'un Service :
    docker service ps NOM_DU_SERVICE
  • Arrêter un Service :
    docker service rm NOM_DU_SERVICE
  • Voir les Logs d'un Service :
    docker service logs NOM_DU_SERVICE
  • Quitter Swarm (pour les nœuds worker) :
    docker swarm leave
  • Quitter Swarm sur un Manager :
    docker swarm leave --force
  • Afficher la consommation de toutes les tâches
    docker stats
  • Afficher la consommation de toutes les tâches
    docker service logs -f --since 30m NOM_DU_SERVICE
  • Scaler un service en modifiant nombre d'instances
    docker service scale mon_service=4

Cette documentation couvre les bases de l'utilisation de Docker Swarm pour l'orchestration de conteneurs. Docker Swarm offre une approche simple mais puissante pour gérer des applications conteneurisées à grande échelle, fournissant des outils pour la scalabilité, la résilience et l'efficacité.