Zrestartuj zasady Korzystając z flagi --restart podczas uruchamiania Dockera, możesz określić zasady restartowania określające, w jaki sposób kontener powinien lub nie powinien być restartowany przy wyjściu.
nie - nie uruchamiaj ponownie kontenera, gdy wychodzi.
w przypadku awarii - zrestartuj kontener tylko wtedy, gdy wyjdzie z niezerowym statusem wyjścia.
always - Zawsze uruchamiaj ponownie kontener niezależnie od statusu wyjścia.
Możesz także określić maksymalną liczbę prób, przez które Docker będzie próbował zrestartować kontener podczas korzystania z zasad dotyczących awarii. Domyślnie Docker na zawsze będzie próbował zrestartować kontener.
$ sudo docker run --restart=always redis
Spowoduje to uruchomienie kontenera redis z zasadą restartu zawsze, więc jeśli kontener zostanie zamknięty, doker zrestartuje go.
$ sudo docker run --restart=on-failure:10 redis
Spowoduje to uruchomienie kontenera redis z zasadą restartu w przypadku awarii i maksymalną liczbą restartów wynoszącą 10. Jeśli kontener redis wyjdzie z niezerowym statusem wyjścia więcej niż 10 razy z rzędu Docker przerwie próbę ponownego uruchomienia kontenera. Podanie maksymalnego limitu ponownego uruchomienia obowiązuje tylko w przypadku zasady dotyczącej awarii.
unless-stopped
dodano kolejną zwaną zasadę. Działa tak,always
ale jeśli kontener zostanie zatrzymany, a system zostanie ponownie uruchomiony lub demon dokera zostanie zrestartowany, kontener się nie uruchomi ponownie. Zobacz tutaj, aby napisać o wszystkich 4 opcjach blog.codeship.com/…docker
demon musi się automatycznie uruchomić, aby to obsługiwać.Docker ma tę stronę, która wyjaśnia, jak to zrobić za pomocą upstart i systemd. Zgadzam się, że nie wydaje się to właściwe dla Dockera. Ich rozwiązaniem jest uruchomienie
docker start
, które zakłada, że już utworzyłeś swój kontener. Pomyślałbym, że albo zrobisz todocker run --rm
w skrypcie startowym (traktując go jak zupełnie nowy proces i kontener z obrazu) lub po prostu pozwól demonowi dokera zrestartować same kontenery podczas uruchamiania (tak jak domyślnie, jeśli nie zrobisz nic innego ). Upstart ma tę zaletę, że umożliwia łatwe uruchamianie / zatrzymywanie procesów, ale uzyskuje się to również dzięki uruchomieniu / zatrzymaniu dokera!Myślę, że dziwne jest zmuszanie użytkownika do ręcznego utworzenia kontenera (ze wszystkimi poprawnymi powiązaniami portu / woluminu) przed uruchomieniem skryptu uruchamiania.
źródło
Dlaczego nie?
Używam do tego superwizora z wielkim sukcesem.
Używaj tego, co wiesz, używaj tego, co działa, używaj czegoś, co możesz łatwo utrzymać i zrozumieć.
źródło
--rm
?--rm
ma to znaczenie.docker
jest zamiennikiemlxc
lubopenvz
które mająlxc.start.auto = 1
ivzctl set --onboot yes
. Zawiera także ESXi i inne rozwiązania wirtualizacyjne. Podobnie jak Lawrence, nie sądzę też, aby taka funkcja autostartu powinna była zostać wdrożona w sposób specyficzny dla dystrybucji, ponieważ użytkownik doku powinien być w stanie rozwiązać ten sam problem z taką samą wiedzą na każdej platformie.