CodeGym /Cours /Docker SELF /Introduction à Docker Swarm

Introduction à Docker Swarm

Docker SELF
Niveau 18 , Leçon 0
Disponible

6.1 Concepts de base de Docker Swarm

Docker Swarm — c'est un système d'orchestration de conteneurs intégré fourni par Docker. Ça permet de créer, gérer et scaler un cluster d'hôtes Docker, en les transformant en un hôte logique unique où on peut lancer des conteneurs. Swarm distribue automatiquement les tâches entre les nœuds, offrant une grande simplicité et une tolérance aux pannes. Dans cette conférence, on va jeter un œil aux composants clés et aux commandes de base pour la gestion de Docker Swarm.

Les concepts de base de Docker Swarm:

  1. Cluster (Swarm): un groupe d'hôtes Docker regroupés en un cluster logique unique.
  2. Managers: les nœuds qui gèrent le cluster et distribuent les tâches entre les nœuds de travail.
  3. Nœuds de travail (Workers): les nœuds qui exécutent les tâches et lancent les conteneurs.
  4. Services: une représentation logique des applications qui décrit quelles tâches doivent être exécutées et combien d'instances des conteneurs doivent être lancées.
  5. Tâches (Tasks): des conteneurs individuels qui sont les instances des services.

L'architecture de Docker Swarm:

Docker Swarm est basé sur une architecture avec des managers et des nœuds de travail. Les managers gèrent l'état du cluster, et les nœuds de travail exécutent les tâches.

Managers:

  • Ils gèrent l'état et la configuration du cluster.
  • Ils distribuent les tâches aux nœuds de travail.
  • Ils assurent une tolérance aux pannes et une haute disponibilité (avec plusieurs managers).

Nœuds de travail:

  • Ils exécutent les tâches assignées par les managers.
  • Ils lancent des conteneurs conformément aux tâches.

Commandes de base de Docker Swarm:

  1. docker swarm init: initialisation d'un nouveau cluster Swarm.
  2. docker swarm join: ajouter un nœud à un cluster existant.
  3. docker node ls: voir la liste des nœuds du cluster.
  4. docker service create: création d'un nouveau service.
  5. docker service ls: voir les services en cours d'exécution.
  6. docker service scale: scaler un service à un certain nombre d'instances.
  7. docker service rm: supprimer un service du cluster.

Utiliser Docker Swarm permet de simplifier la gestion des applications dans des systèmes distribués, offrant tolérance aux pannes, scalabilité et simplicité de déploiement.

6.2 Création d'un cluster Docker Swarm

Création et gestion d’un cluster Docker Swarm

Étape 1 : Initialisation du cluster

Sur le premier hôte (Manager), exécutez la commande :

Terminal

docker swarm init --advertise-addr <MANAGER_IPl>

Cette commande initialise un nouveau cluster Swarm, rend le nœud actuel manager et affiche une commande pour joindre les nœuds workers.

Étape 2 : Joindre des nœuds workers

Sur les autres hôtes, exécutez la commande affichée lors de l'exécution de docker swarm init, pour les joindre au cluster :

Terminal

docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:2377

Où :

  • <SWARM_TOKEN> : le token pour rejoindre le cluster (fourni par la commande docker swarm init).
  • <MANAGER_IP> : l'adresse IP du nœud manager.

Étape 3 : Afficher les nœuds

Pour voir tous les nœuds dans le cluster, utilisez la commande :

Terminal

docker node ls

Cette commande affiche une liste de tous les nœuds, y compris leurs rôles, états et disponibilités.

Exemple de sortie de la commande docker node ls

Terminal

ID                                    HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
qwertyuiop12345    manager-node        Ready               Active             Leader
asdfghjkl67890      worker-node1       Ready               Active
zxcvbnm09876       worker-node2       Ready               Active

Explication des colonnes :

  • ID : Identifiant unique du nœud.
  • HOSTNAME : Le nom de l'hôte sur lequel le nœud est exécuté.
  • STATUS : L'état actuel du nœud (par exemple, Ready).
  • AVAILABILITY : La disponibilité du nœud (par exemple, Active).
  • MANAGER STATUS : Indique si le nœud est un manager (par exemple, Leader, Reachable) ou un worker (vide).

Maintenant, le cluster Docker Swarm est configuré, et vous pouvez créer et mettre à l’échelle vos applications.

6.3 Gestion de Docker Swarm

Gestion des services dans Docker Swarm

1. Création d'un service

Crée un service qui sera lancé avec un nombre défini de répliques :

Terminal

docker service create --name my_web --replicas 3 -p 8080:80 nginx

Dans cet exemple, un service my_web est créé et lance 3 instances de Nginx. Les conteneurs publient le port 80 sur le port 8080 de l'hôte.

2. Voir les services

Pour voir tous les services en cours d'exécution dans le cluster, utilise la commande :

Terminal

docker service ls

Exemple de sortie de la commande docker service ls

Terminal

ID                     NAME         MODE           REPLICAS     IMAGE
ab12345               my_web       replicated     3/3          nginx:latest

3. Mise à l'échelle d'un service

Pour modifier le nombre d'instances (répliques) d'un service, utilise la commande docker service scale :

Terminal

docker service scale my_web=5

Maintenant, le service my_web aura 5 instances.

4. Mise à jour d'un service

Pour mettre à jour l'image d'un service vers une nouvelle version, utilise la commande docker service update :

Terminal

docker service update --image nginx:latest my_web

Garantir une haute disponibilité

Docker Swarm prend en charge la haute disponibilité grâce à :

  1. La distribution des tâches entre les nœuds du cluster pour une récupération automatique des conteneurs en cas de panne.
  2. Le support de plusieurs managers : Il est recommandé d'avoir un nombre impair de managers (par exemple, 3 ou 5) pour éviter les problèmes de quorum.
  3. L'utilisation de répliques : Configure plusieurs répliques pour chaque service pour augmenter la tolérance aux pannes.

Concept de quorum

Le quorum représente la majorité des nœuds qui doivent être d'accord avec une certaine action (par exemple, l'écriture de données ou l'élection d'un leader) pour qu'elle soit considérée comme valide. Par exemple, dans un cluster de 5 nœuds, le quorum sera de 3 nœuds.

Astuce utile ! Assure-toi que les managers sont situés sur différents serveurs physiques ou dans le cloud pour minimiser le risque de pannes simultanées.

6.4 Exemple de configuration Docker Compose pour Docker Swarm

Docker Compose peut être utilisé avec Docker Swarm pour simplifier la gestion des applications multi-conteneurs.

Exemple de fichier docker-compose.yml

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080-8090:80"
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure
    networks:
      - my_overlay_network

  db:
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: exemple
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
    networks:
      - my_overlay_network

networks:
  my_overlay_network:
    driver: overlay
    

Lancement du stack Docker Compose dans Swarm

Pour déployer un stack dans Docker Swarm, utilisez la commande :

Terminal

docker stack deploy -c docker-compose.yml mystack

Visualisation du stack

Visualisation des stacks déployés :

Terminal

docker stack ls

Visualisation des services dans le stack

Terminal

docker stack services mystack
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION