Widzę, że Docker dodał coś, co nazywa się zasadami restartowania, aby obsłużyć restart kontenerów w przypadku, na przykład, restartu.
Chociaż jest to bardzo przydatne, widzę, że polecenie zasad restartu po prostu działa docker run
i nie działa docker start
. Więc moje pytanie brzmi:
Czy jest jakiś sposób na dodanie zasad restartu do kontenera, który został już utworzony w przeszłości?
Odpowiedzi:
W najnowszych wersjach okna dokowanego (od 1.11) masz
update
polecenie:źródło
docker update --restart always <container>
docs.docker.com/engine/admin/start-containers-automaticallydocker update
akceptuje wiele identyfikatorów kontenerów, więc nie ma takiej potrzebyxargs
, po prostu zróbdocker update --restart=always $(docker ps -q)
.Istnieją dwa podejścia do modyfikacji RestartPolicy:
docker commit
swój kontener jako nowy obraz, zatrzymaj bieżący kontener i uruchom nowy kontener z obrazem.źródło
docker update
zezwala na modyfikację zasad restartu tylko 1.11+Użycie
--restart=always
zasad zajmie się ponownym uruchomieniem istniejących kontenerów w przypadku ponownego uruchomienia.Problem polega na tym, że jeśli istnieje wiele kontenerów z
--restart=always
uruchomionym obrazem nowszej wersji, jak omówiono w oknie dokowanym - jak wyłączyć automatyczne ponowne uruchamianie kontenera? .Dlatego w takim przypadku lepiej wybrać inną opcję: - zrestartuj, chyba że zatrzymano zasadę .
Polityka ta nie będzie sprzeczne
docker run --rm
ale jak wyjaśniono w dokumentacji Döcker :Dlatego podczas korzystania z tej
--restart unless-stopped
zasady, aby upewnić się, że ponowne uruchomienie działa, na wypadek gdyby zatrzymało się przypadkowo po zamknięciu terminala, wykonaj raz w innym terminalu, jak poniżej:Poczekaj, aż proces zabijania zakończy się w poprzedniej powłoce, a następnie zamknij ją i po prostu wyjdź ( nie wyjdź ).
I sprawdź ponownie w pozostałym terminalu, czy kontener nadal działa:
Jeśli nadal działa, możesz bezpiecznie zrestartować komputer i ponownie sprawdzić, czy aplikacja uruchamia się ponownie, i zobaczyć, czy okno dokowane jest czyste bez nieużywanego wielu kontenerów.
źródło