2013-08-27 4 views
9

Es ist ziemlich einfach, MongoDB Container mit Docker zu betreiben. Jedes Mal, wenn Sie einen neuen mongodb-Container starten, erhalten Sie eine neue leere Datenbank.Wie behalte ich MongoDB-Daten zwischen Container-Neustarts?

Was soll ich tun, um den Inhalt der Datenbank zwischen Neustarts der Container zu halten? Ich habe versucht, das externe Verzeichnis mit der Option -v an den Container zu binden, aber ohne Erfolg.

Antwort

5

Ich versuchte mit der ehazlett/mongodb Bild und es hat gut funktioniert.

Mit diesem Bild können Sie einfach angeben, wo mongo seine Daten mit der DATA_DIR env-Variable speichern soll. Ich bin mir sicher, dass es nicht sehr schwierig sein sollte, dein Image zu ändern.

Hier ist, was ich getan habe:

mkdir test; docker run -v `pwd`/test:/tmp/mongo -e DATA_DIR=/tmp/mongo ehazlett/mongodb

Bekanntmachung der `pwd` in innerhalb des -v, da der Server und der Client möglicherweise anderen Weg haben, ist es wichtig, den absoluten Pfad angeben.

Mit diesem Befehl kann ich Mongo so oft wie ich möchte laufen lassen und die Datenbank wird immer im ./test Verzeichnis gespeichert, das ich gerade erstellt habe.

+0

Dies ist der Ansatz, den ich auch für MySQL/Postgres in docker v0.5.x. Nicht sicher, ob 1.0 eine andere Lösung hat. – amattn

+1

Vielen Dank, Guillaume! Es funktionierte. Nur noch eine Anmerkung für Vagrant-Benutzer wie mich: Legen Sie kein Mongo-Verzeichnis innerhalb des/Vagrant-Verzeichnisses auf der virtuellen Maschine ab, Mongo kann keine Dateien in diesem Verzeichnis sperren und wird sofort beendet. –

+0

Funktioniert das auf Windows Boot2docker? Ich habe versucht, aber es gibt einen Fehler zurück FEHLER: Nicht genügend Speicherplatz für Journaldateien und startet nie – Astronaut

Verwandte Themen