Czy ktoś wie, czy istnieje sposób, aby roota w stacji dokującej uruchomił ponownie jedną usługę, która jest częścią stosu bez ponownego uruchamiania całego stosu?Zrestartuj jedną usługę w stosie roota w stacji dokującej.
Odpowiedz
Patrząc na dokumentacji docker stack
:
rozszerzony opis
Tworzenie i aktualizacja stos z Compose lub pliku zimnicy na rój
Od this blog article: docker stack
działa w podobny sposób, co docker compose
. Jest to idempotent. Jeśli stos jest już wdrożony, docker stack deploy
zrestartuje tylko te usługi, która ma likwidacji lub znacznik, który jest aktualizowane:
Z mojego doświadczenia, kiedy wdrożyć ten sam stos ponownie jedna usługa zmieniając jedynie zaktualizowana usługa zostanie ponownie uruchomiona.
ALE ... nie wydaje się być pewne ograniczenia na zmiany, które są brane pod uwagę (jakiś raport bugs with image tags), więc spróbować i zobaczyć, czy działa zgodnie z oczekiwaniami.
Możesz także użyć service update
, jeśli chcesz mieć pewność, że tylko ukierunkowana usługa zostanie zaktualizowana wraz z wprowadzonymi zmianami.
Ponownie dla mnie jest to sposób na aktualizację usług. Jako Francois' Answer, a także w moim własnym doświadczeniu, robi to aktualizuje tylko usługi, które wymagają aktualizacji.
Czasami wydaje się łatwiejsze, gdy testowanie sprzętu spowoduje ponowne uruchomienie tylko jednej usługi. W moim przypadku musiałem usunąć wolumin i zaktualizować usługę, aby rozpocząć, tak jak było świeże. Nie jestem pewien, czy jest jakiś minus metody, którą opiszę. Przetestowałem to na moim stosie programistycznym i zadziałało to dla mnie.
Pobierz identyfikator usługi, który chcesz zburzyć następnie użyć docker service update --force <id>
wymusić aktualizację usługi, które skutecznie ponownego wdrożyć to
$ docker stack services <stack_name>
ID NAME ...
3xrdy2c7pfm3 stack-name_api ...
$ docker service update --force 3xrdy2c7pfm3
--force
flag zmusi usługę aktualizacji powodując jej ponowne uruchomienie.
Dzięki, działa to zgodnie z oczekiwaniami. Właściwie zamierzam wymusić ponowne uruchomienie jednej konkretnej usługi (lub całego stosu) w sposób toczący. Niestety niektóre usługi, z którymi mam do czynienia, mają problem z unieważnieniem pamięci podręcznej i stwierdziliśmy, że musimy usunąć/ponownie wdrożyć na stosie, aby wymusić aktualizacje. Patrząc na dokumentację 'service update' mogłem dodać/usunąć zmienne' env', aby zmyślić je, jeśli nie ma wbudowanych. – tweeks200
Szukałem tego samego - nie mogłem znaleźć żadnego w dokumentach. –