Die Verwendung der --restart=always
Richtlinie behandelt den Neustart vorhandener Container im Falle eines Neustarts.
Das Problem ist , dass , wenn es mehr Container mit , --restart=always
wenn Sie Bild einer neueren Version laufen , wie in diskutiert Docker - wie wollen Sie deaktivieren Auto-Neustart auf einen Behälter? .
Der Versuch, den Container automatisch zu entfernen, wenn er per Put-Option vorhanden ist, docker run --rm
führt ebenfalls zu Problemen mit der --restart=always
Richtlinie, da sie in Konflikt miteinander stehen .
$ docker run --rm --restart always <image>
Conflicting options: --restart and --rm
In diesem Fall ist es daher besser, eine andere Option zu wählen: --Starten Sie die Richtlinie neu, sofern sie nicht gestoppt ist.
$ docker run --rm --restart unless-stopped <image>
Diese Richtlinie widerspricht nicht dem docker run --rm
, wie in der Docker-Dokumentation erläutert :
Ähnlich wie --restart=always
, außer dass der Container beim Stoppen (manuell oder auf andere Weise) auch nach dem Neustart des Docker-Dämons nicht neu gestartet wird.
Wenn Sie diese --restart unless-stopped
Richtlinie verwenden, um sicherzustellen, dass der Neustart funktioniert, falls er beim Schließen des Terminals versehentlich stoppt, gehen Sie wie folgt einmal in einem anderen Terminal vor :
$ docker ps
$ docker restart <container>
Warten Sie, bis der Tötungsprozess in der vorherigen Shell beendet ist, schließen Sie sie und gehen Sie einfach ( nicht beenden ).
Überprüfen Sie im verbleibenden Terminal erneut, ob der Container noch läuft:
$ docker ps
Wenn es noch ausgeführt wird, können Sie sicher neu starten und erneut überprüfen, ob die Anwendung neu gestartet wird, und feststellen, dass Ihr Docker sauber ist, ohne dass mehrere Container verwendet werden.