2016-04-23 23 views
3

Ich verwende Rancher als Orchestrierung Werkzeug. Ich habe einen einzigen Knoten Cassandra in einem Container installiert und möchte ihn neu starten, weil ich vor kurzem einige Änderungen in der Konfigurationsdatei (cassandra.yaml) vorgenommen habe. Es gibt bereits Daten in der Datenbank, also möchte ich Datenverlust verhindern. Ich benutze usman/docker-rancher-cassandra:3.1 Bild. Welcher Befehl sollte dies tun?Docker Container Neustart ohne Datenverlust

Antwort

5

Das Neustarten eines Containers wirkt sich nicht auf Ihre Daten im Container aus. Wenn Sie versuchen, den Container mit dem neuen Image neu zu erstellen, können Sie die Daten verlieren.

Wenn Sie Volumes verwenden, werden Ihre Daten im Host beibehalten. Es hängt davon ab, wie Sie Ihren Container gestartet haben. Sie können die Volume-Informationen von docker inspect <container_name> überprüfen.

Durch die dockerfile, die Sie verwenden, ist das Cassandra-Datenverzeichnis ein Volume.

VOLUME /var/lib/cassandra 

Wenn Sie explizit

docker run -d -v <HOST_PATH>:/var/lib/cassandra usman/docker-rancher-cassandra:3.1 

Dann können Sie den Behälter mit der neuen Version ein Upgrade mit Ihrem Behältervolumen montiert. Andernfalls müssen Sie die Daten vor dem erneuten Erstellen des Containers aus dem Verzeichnis kopieren.

soution 1:

Starten Sie eine andere Behälter aus den Bänden von vorhandenen Container.

docker stop cassandra 
docker run -it --volumes-from cassandra \ 
       --name="cassandra-new" \ 
       usman/docker-rancher-cassandra:3.1 

Wenn alles gut funktioniert, entfernen Sie den vorherigen Behälter und benennen Sie den Behälter

docker rm cassandra 
docker rename cassandra-new cassandra 

LÖSUNG 2:

Sie die Daten aus /var/lib/docker/volumes/531419fb27d1dff9c5371769edc08d6160f71061c9fe3af05309a3a0c51bb84d/_data einige kopieren anderes Verzeichnis vor dem Neuerstellen des Containers. Sie müssen das Verzeichnis montieren, während die neuen Container

docker run -v <HOST_PATH>:/var/lib/cassandra

+0

Gibt es eine Methode zum Exportieren von Daten aus dem Behälter und nach dem Neustart Import unter Verwendung von Ausgang es? Ich habe es nicht explizit installiert. – plaidshirt

+1

@KovacsAkos, aktualisierte Antwort, um Ihre Daten aus dem Container wiederherzustellen. – Gangaraju