web-dev-qa-db-fra.com

Redémarrez un service dans la pile d'essaims de docker

Est-ce que quelqu'un sait s'il existe un moyen de demander à Docker Swarm de redémarrer un service faisant partie d'une pile sans redémarrer toute la pile?

50
tweeks200

Faire à nouveau docker stack deploy pour moi est la voie à suivre pour mettre à jour les services. Comme Réponse de François , et aussi selon ma propre expérience, cela ne met à jour que les services qui doivent être mis à jour.

Mais parfois, il semble plus facile, lors des tests, de ne redémarrer qu’un seul service. Dans mon cas, je devais effacer le volume et mettre à jour le service pour le démarrer comme si de rien n'était. Je ne suis pas sûr s'il y a des inconvénients à la méthode que je vais décrire. Je l'ai testé sur ma pile de développement et cela a très bien fonctionné pour moi.

Obtenez le numéro de service que vous souhaitez supprimer, puis utilisez docker service update --force <id> pour forcer la mise à jour du service qui le redéployera effectivement.

$ docker stack services <stack_name>
ID                  NAME              ...
3xrdy2c7pfm3        stack-name_api    ...

$ docker service update --force 3xrdy2c7pfm3

L’indicateur --force oblige le service à se mettre à jour et le redémarre.

63
Matt

Échelle à 0 et sauvegarde:

docker service scale myservice=0
docker service scale myservice=10
42
Luke W

En regardant la documentation docker stack :

Description détaillée

Créer et mettre à jour une pile à partir d'un fichier de composition ou d'un fichier DAB sur l'essaim

De cet article de blog : _docker stack_ fonctionne de la même manière que _docker compose_. C’est idempotent . Si la pile est déjà déployée, _docker stack deploy_ redémarre uniquement les services dont le condensé ou la balise est mis à jour:

docker stack process

D'après mon expérience, lorsque je déploie à nouveau la même pile avec un service en train de changer, , seul le service mis à jour sera redémarré .

MAIS ... il semble y avoir certaines limitations aux modifications prises en compte (certains signalent bogues avec des balises d'image ) Essayez donc de voir si cela fonctionne comme prévu.

Vous pouvez également utiliser service update si vous voulez être sûr que seul le service ciblé est mis à jour avec vos modifications.

Vous pouvez également vous référer à ce SO QA similaire .

9
François Maturel