Użycie --restart=alwayszasad 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=alwaysuruchomionym obrazem nowszej wersji, jak omówiono w oknie dokowanym - jak wyłączyć automatyczne ponowne uruchamianie kontenera? .
Próba automatycznego usunięcia kontenera, gdy istnieje on przez opcję sprzedaży, docker run --rmbędzie również stanowić problem dla --restart=always
zasad, ponieważ są one ze sobą w konflikcie .
$ docker run --rm --restart always <image>
Conflicting options: --restart and --rm
Dlatego w takim przypadku lepiej wybrać inną opcję: - zrestartuj, chyba że zatrzymano zasadę .
$ docker run --rm --restart unless-stopped <image>
Polityka ta nie będzie sprzecznedocker run --rm ale jak wyjaśniono w dokumentacji Döcker :
Podobnie jest --restart=alwaysz tym wyjątkiem, że gdy kontener zostanie zatrzymany (ręcznie lub w inny sposób) , nie zostanie ponownie uruchomiony nawet po ponownym uruchomieniu demona Docker.
Dlatego podczas korzystania z tej --restart unless-stoppedzasady, 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:
$ docker ps
$ docker restart <container>
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:
$ docker ps
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.