Services et tâches

Un service est un état souhaité (une image, un nombre de répliques, des contraintes) ; les managers le traduisent en tâches, un conteneur chacune, placées sur les nœuds qui peuvent les faire tourner, et remplacent toute tâche qui s'arrête.

Comment ça marche

docker service ps montre chaque emplacement avec son historique : New, Pending, Assigned, Preparing (téléchargement), Starting, Running, puis Failed, Rejected, Shutdown ou Orphaned. L'ordonnanceur répartit les répliques sur les nœuds éligibles. À la création d'un service, le manager résout le tag de l'image en digest dans le registre, pour que chaque nœud tire la même image.

Ce qui casse

Une tâche Rejected avec No such image tournait sur un nœud qui ne peut pas obtenir l'image : elle n'a été construite qu'en local, ou le registre est injoignable. Après cinq échecs sur un nœud en cinq minutes, Swarm évite ce nœud pour le service, si bien que les répliques s'entassent sur le seul nœud qui marche et que le service paraît sain jusqu'à ce que ce nœud disparaisse.

Dans un terminal

docker service ls
docker service ps --no-trunc shop_api
docker service logs --tail 20 shop_api
docker service inspect --pretty shop_api

Regarde-le casser, puis répare-le

Écris le Dockerfile ou le fichier compose, tape les commandes docker, et regarde un serveur simulé les exécuter à travers redémarrages, mises à jour et trafic. Gratuit pour commencer.