Introduction
Docker Swarm est une solution puissante d'orchestration de conteneurs qui permet aux développeurs de transformer plusieurs hôtes Docker en une infrastructure unifiée et évolutive. Ce tutoriel complet fournit des informations approfondies sur la création, la configuration et la gestion des clusters Docker Swarm, couvrant les concepts essentiels, les types de nœuds, les stratégies de déploiement de services et les meilleures pratiques pour la construction d'environnements conteneurisés robustes.
Notions de base de Docker Swarm
Introduction à Docker Swarm
Docker Swarm est une solution native de clustering et d'orchestration de conteneurs pour les environnements Docker. Elle permet aux développeurs de créer et de gérer un cluster de nœuds Docker, transformant plusieurs hôtes Docker en un seul hôte Docker virtuel.
Concepts fondamentaux
Architecture du cluster Swarm
graph TD
A[Gestionnaire Swarm] --> B[Nœud Travailleur 1]
A --> C[Nœud Travailleur 2]
A --> D[Nœud Travailleur 3]
Types de nœuds Swarm
| Type de nœud | Description | Responsabilités |
|---|---|---|
| Nœud Manager | Contrôle l'état du cluster | Orchestration, Planification |
| Nœud Travailleur | Exécute les charges de travail des conteneurs | Exécution des services |
Initialisation d'un cluster Swarm
## Initialiser Swarm sur le nœud principal
docker swarm init --advertise-addr 192.168.1.100
## Générer le jeton de connexion pour les nœuds travailleurs
docker swarm join-token worker
## Joindre les nœuds travailleurs au cluster
docker swarm join --token < token > 192.168.1.100:2377
Fonctionnalités clés
- Conception décentralisée
- Modèle de service déclaratif
- Mise à l'échelle et mises à jour incrémentales
- Découverte de services -équilibrage de charge
- Communication sécurisée
Exemple de déploiement de service
## Créer un service répliqué
docker service create --replicas 3 --name web nginx
## Mettre à l'échelle le service
docker service scale web=5
## Mettre à jour le service
docker service update --image nginx:latest web
Configuration du cluster
Topologie du cluster Swarm
graph TD
A[Nœud Manager] --> B[Nœud Travailleur 1]
A --> C[Nœud Travailleur 2]
A --> D[Nœud Travailleur 3]
Stratégies d'initialisation des nœuds
Configuration du nœud Manager
## Initialiser le cluster Swarm sur le nœud Manager principal
docker swarm init --advertise-addr 192.168.1.100
## Afficher les jetons de connexion au cluster
docker swarm join-token manager
docker swarm join-token worker
Configuration du nœud Travailleur
## Joindre le nœud Travailleur au cluster
docker swarm join \
--token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxx \
192.168.1.100:2377
Paramètres de configuration du cluster
| Paramètre | Description | Valeur par défaut |
|---|---|---|
| Adresse d'annonce | Interface réseau du nœud | IP principale |
| Port d'écoute | Port de communication Swarm | 2377 |
| Étiquettes de nœud | Métadonnées pour la sélection des nœuds | Aucune |
Configuration avancée du cluster
## Ajouter des étiquettes de nœud personnalisées
docker node update --label-add type=frontend worker1
## Définir la disponibilité du nœud
docker node update --availability drain worker2
Configuration du réseau
## Créer un réseau overlay
docker network create \
--driver overlay \
--subnet 10.0.0.0/24 \
my-network
Gestion des services
Flux de déploiement des services
graph LR
A[Créer le service] --> B[Déployer les conteneurs]
B --> C[Mettre à l'échelle le service]
C --> D[Mettre à jour le service]
D --> E[Surveiller les performances]
Création de base de service
## Déployer le service nginx avec 3 répliques
docker service create \
--name web-service \
--replicas 3 \
--publish 80:80 \
nginx:latest
Options de configuration du service
| Option | Description | Exemple |
|---|---|---|
| --replicas | Nombre d'instances de conteneurs | 3 |
| --update-parallelism | Mises à jour simultanées | 2 |
| --constraint | Règles de placement des nœuds | node.labels.type==frontend |
Stratégies de mise à l'échelle des services
## Mettre à l'échelle le service dynamiquement
docker service scale web-service=5
## Mise à l'échelle horizontale
docker service update \
--replicas-max-per-node 2 \
web-service
Configuration de l'équilibrage de charge
## Créer un service avec un équilibrage de charge personnalisé
docker service create \
--name api-service \
--replicas 4 \
--publish mode=host,target=8080,published=80 \
--update-delay 10s \
api-image:latest
Mécanismes de mise à jour des services
## Stratégie de mise à jour progressive
docker service update \
--image nginx:latest \
--update-parallelism 2 \
--update-delay 10s \
web-service
Surveillance des services
## Lister les services actifs
docker service ls
## Inspecter un service spécifique
docker service ps web-service
Résumé
En maîtrisant Docker Swarm, les développeurs et les administrateurs système peuvent gérer efficacement les applications conteneurisées sur des systèmes distribués. Ce tutoriel présente les techniques clés pour initialiser les clusters, configurer les topologies de nœuds, déployer des services et exploiter des fonctionnalités avancées telles que la découverte de services, l'équilibrage de charge et la communication sécurisée. La compréhension de ces fondements permet aux équipes de construire des infrastructures de conteneurs évolutives, résilientes et offrant une efficacité opérationnelle accrue.



