English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Docker Swarm est un outil de gestion de groupe de Docker. Il transforme un pool d'ordinateurs Docker en un seul ordinateur Docker virtuel. Docker Swarm fournit une API Docker standard, tout outil qui communique avec le démon Docker peut utiliser Swarm pour s'étendre facilement à plusieurs hôtes.
Les outils pris en charge incluent, sans s'y limiter, ce qui suit :
Dokku
Docker Compose
Docker Machine
Jenkins
Comme le montre la figure suivante, un groupe swarm est composé de nœuds de gestion (manager) et de nœuds de travail (work node).
swarm mananger: responsable de la gestion de l'ensemble du groupe, y compris la configuration du groupe, la gestion des services et tous les travaux liés au groupe.
nœud de travail: c'est le nœud disponible sur la figure, principalement responsable de la mise en œuvre de services correspondants pour exécuter des tâches (task).
Les exemples ci-dessous sont présentés à l'aide de Docker Machine et virtualbox, assurez-vous que votre hôte a installé virtualbox.
Créer une machine docker :
$ docker-machine create -d virtualbox swarm-manager
Initialiser un groupe swarm, l'ordinateur sur lequel s'effectue l'initialisation est le nœud de gestion du groupe.
$ docker-machine ssh swarm-manager $ docker swarm init --advertise-addr 192.168.99.107 #L'IP ici est l'IP attribuée lors de la création de l'ordinateur.
La sortie ci-dessus prouve que l'initialisation a réussi. Vous devez copier la ligne suivante, qui sera utilisée lors de l'ajout d'un nœud de travail :
docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh2j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377
Ici, nous créons directement deux machines, swarm-worker1 et swarm-worker2 .
Entrez respectivement dans les deux machines, spécifiez pour ajouter au cluster créé à l'étape précédente, ici il sera utilisé le contenu copié à l'étape précédente.
Les données de sortie ci-dessus indiquent que l'ajout a réussi.
Dans l'image ci-dessus, en raison de la longueur du contenu copié à l'étape précédente, il sera automatiquement tronqué. En réalité, la commande exécutée dans l'image est la suivante :
docker@swarm-worker1:~$ docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh2j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377
Entrez dans le nœud de gestion et exécutez : docker info pour voir les informations du cluster actuel.
$ docker info
En regardant l'endroit où est dessinée la croix rouge, on peut savoir que dans le cluster en cours d'exécution, il y a trois nœuds, dont un est le nœud de gestion.
AttentionToute opération liée à la gestion du cluster est effectuée sur le nœud de gestion.
Dans l'exemple suivant, nous créons un service nommé helloworld sur un nœud de travail, ici il est attribué de manière aléatoire à un nœud de travail :
docker@swarm-manager:~$ docker service create --répliques 1 --name helloworld alpine ping docker.com
Vérifiez sur quel nœud le service helloworld s'exécute, on peut voir qu'il s'exécute actuellement dans swarm-worker1 Nœud :
docker@swarm-manager:~$ docker service ps helloworld
Vérifiez les informations spécifiques du déploiement helloworld :
docker@swarm-manager:~$ docker service inspect --pretty helloworld
Nous allons étendre le service helloworld à deux nœuds.
docker@swarm-manager:~$ docker service scale helloworld=2
On peut voir qu'il s'est étendu d'un nœud à deux nœuds.
docker@swarm-manager:~$ docker service rm helloworld
Vérifiez si elle a été supprimée :
Dans l'exemple suivant, nous allons expliquer comment la version redis peut être mise à niveau vers une version supérieure.
Créer un 3.0.6 version redis.
docker@swarm-manager:~$ docker service create --répliques 1 --nom redis --mise à jour-délai 10s redis:3.0.6
Mise à jour en continu de redis .
docker@swarm-manager:~$ docker service update --image redis:3.0.7 redis
Regardez l'image pour voir que la version de redis est passée de 3.0.6 Mis à niveau vers 3.0.7,ce qui signifie que le service a été mis à jour avec succès.
Voir tous les nœuds :
docker@swarm-manager:~$ docker node ls
Vous pouvez voir que tous les nœuds sont Actifs, et peuvent recevoir de nouvelles tâches d'attribution.
Arrêt du nœud swarm-worker1:
Attention:swarm-worker1 L'état devient Drain. Cela n'affecte pas les services du cluster, c'est seulement swarm-worker1 Le nœud ne reçoit plus de nouvelles tâches, la capacité de charge du cluster diminue.
Vous pouvez réactiver le nœud avec la commande suivante :
docker@swarm-manager:~$ docker node update --disponibilité active swarm-worker1