Ich sehe, dass Docker so genannte Neustartrichtlinien hinzugefügt hat, um den Neustart von Containern im Falle eines Neustarts zu handhaben.
Dies ist zwar sehr nützlich, aber ich sehe, dass der Befehl zum Neustarten der Richtlinie nur funktioniert docker run
und nicht docker start
. Meine Frage lautet also:
Gibt es eine Möglichkeit, einem Container, der bereits in der Vergangenheit erstellt wurde, Neustartrichtlinien hinzuzufügen?
Antworten:
In neueren Versionen von Docker (ab 1.11) haben Sie einen
update
Befehl:quelle
docker update --restart always <container>
docs.docker.com/engine/admin/start-containers-automaticallydocker update
mehrere Container - IDs akzeptiert, so dass keine Notwendigkeit fürxargs
überhaupt, nur tundocker update --restart=always $(docker ps -q)
.Es gibt zwei Ansätze, um RestartPolicy zu ändern:
docker commit
Stoppen Sie Ihren Container als neues Image, stoppen Sie den aktuellen Container und starten Sie einen neuen Container mit dem Image.quelle
docker update
kann nur Neustart - Richtlinie auf 1.11+ ändernDie 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? .In diesem Fall ist es daher besser, eine andere Option zu wählen: --Starten Sie die Richtlinie neu, sofern sie nicht gestoppt ist.
Diese Richtlinie widerspricht nicht dem
docker run --rm
, wie in der Docker-Dokumentation erläutert :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 :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:
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.
quelle