2016-11-11 4 views
2

ich den folgenden Befehl bin mit Docker ContainernDocker Drop Änderungen beim Neustart

# docker run --restart=always -d -p 80:80 image_name 

beginnen und dies bedeutet, dass Docker-Dämon wird den Prozess neu starten, wenn es beendet, aber es scheint, dass die Änderungen in dem Behälter hergestellt bleibt nach dem Neustart des Prozesses erhalten. Gibt es eine Möglichkeit, Docker-Daemon alle Änderungen beim Neustart des Prozesses fallen zu lassen? Ich meine, ich möchte, dass der Docker-Daemon einen neuen Container aus dem Image startet, anstatt nur den Prozess neu zu starten.

+1

Fügen Sie Ihrem Befehl die Markierung '-rm' hinzu. Dies wird den Behälter entfernen, sobald er stoppt. –

+0

@JonStirling Warum postest du diesen Kommentar nicht als Antwort? – jannis

+0

@jannis Gute Frage;) –

Antwort

1

Es gibt keine Möglichkeit mit der Docker Engine API.

Die beste Idee ist, den Container mit --restart = no (default) -Parameter auszuführen und einen externen Prozessmonitor zu verwenden. Wenn Sie beispielsweise ein RHEL-basiertes Betriebssystem haben, können Sie systemd unit-Dateien verwenden. Sie würden dann Ihren Container als Dienst steuern.

ich dies häufig tun:

[Unit] 
Description=My Service 
Requires=docker.service 

[Service] 
ExecStartPre=/usr/bin/docker create -d --name=container_name image_name 
ExecStart=/usr/bin/docker start container_name 
ExecStop=/usr/bin/docker stop container_name 
ExecStopPost=/usr/bin/docker rm container_name 

[Install] 
WantedBy=multi-user.target 

Sie auch Docker-compose das Auto verfügt über Optionen Erholung nutzen können.

Verwandte Themen