2013-08-27 13 views
9

Jest to dość łatwe do uruchomienia MongoDB kontenerach za pomocą dokowane. Chociaż za każdym razem, gdy uruchamiasz nowy kontener mongodb, otrzymasz nową pustą bazę danych.Jak zachować dane MongoDB między ponownymi uruchomieniami kontenerów?

Co należy zrobić, aby utrzymać zawartość bazy danych pomiędzy uruchomieniu kontenerowych? Próbowałem powiązać zewnętrzny katalog z kontenerem za pomocą opcji -v, ale bez powodzenia.

Odpowiedz

5

Próbowałem za pomocą ehazlett/mongodb obraz i to działało dobrze.

z tego obrazu, można łatwo określić, gdzie przechowują Mongo jego dane ze zmienną DATA_DIR env. Jestem pewien, że zmiana twojego wizerunku nie może być zbyt trudna.

Oto co zrobiłem:

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

Zawiadomienie `pwd` w obrębie -v, jako serwer i klient może mieć inną ścieżkę, ważne jest, aby określić ścieżkę bezwzględną.

Za pomocą tego polecenia mogę uruchomić mongo tyle razy, ile chcę, a baza danych zawsze będzie przechowywana w właśnie utworzonym katalogu ./test.

+0

To podejście Wziąłem również dla MySQL/PostgreSQL w Döcker v0.5.x. Nie jestem pewien, czy 1.0 będzie miał inne rozwiązanie. – amattn

+1

Wielkie dzięki, Guillaume! Zadziałało. Jeszcze jedna uwaga dla użytkowników Vagrant takich jak ja: nie umieszczaj katalogu mongo w katalogu/vagrant na maszynie wirtualnej, mongo nie może zablokować plików w tym katalogu i natychmiast zakończy działanie. –

+0

Czy to działa w systemie Windows boot2docker? Próbowałem, ale zwraca błąd o błędzie: Za mało wolnego miejsca dla plików dziennika i nigdy zaczyna – Astronaut

Powiązane problemy