2016-02-15 7 views
19

Ich möchte Dockerizing MongoDB verwenden und Daten in lokalen Datenträger speichern.Wie docker mongo Datenvolume

Aber .. gescheitert ...

Es hat Mongo: neueste Bilder

kerydeMacBook-Pro:~ hu$ docker images 
REPOSITORY   TAG     IMAGE ID   CREATED    VIRTUAL SIZE 
mongo    latest    b11eedbc330f  2 weeks ago   317.4 MB 
ubuntu    latest    6cc0fc2a5ee3  3 weeks ago   187.9 MB 

ich die Mono-Daten in ~/Daten gespeichert werden sollen. so ---

kerydeMacBook-Pro:~ hu$ docker run -p 27017:27017 -v ~/data:/data/db --name mongo -d mongo 
f570073fa3104a54a54f39dbbd900a7c9f74938e2e0f3f731ec8a3140a418c43 

Aber ... es nicht ...

Docker ps - kein Dämon Mongo

kerydeMacBook-Pro:~ hu$ docker ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES 

try to run „Mongo "--failed

kerydeMacBook-Pro:~ hu$ docker exec -it f57 bash 
Error response from daemon: Container f57 is not running 

Docker inspizieren Mongo

kerydeMacBook-Pro:~ hu$ docker inspect mongo 
[ 
{ 
    "Id": "f570073fa3104a54a54f39dbbd900a7c9f74938e2e0f3f731ec8a3140a418c43", 
    "Created": "2016-02-15T02:19:01.617824401Z", 
    "Path": "/entrypoint.sh", 
    "Args": [ 
     "mongod" 
    ], 
    "State": { 
     "Status": "exited", 
     "Running": false, 
     "Paused": false, 
     "Restarting": false, 
     "OOMKilled": false, 
     "Dead": false, 
     "Pid": 0, 
     "ExitCode": 100, 
     "Error": "", 
     "StartedAt": "2016-02-15T02:19:01.74102535Z", 
     "FinishedAt": "2016-02-15T02:19:01.806376434Z" 
    }, 




"Mounts": [ 
     { 
      "Source": "/Users/hushuming/data", 
      "Destination": "/data/db", 
      "Mode": "", 
      "RW": true 
     }, 
     { 
      "Name": "365e687c4e42a510878179962bea3c7699b020c575812c6af5a1718eeaf7b57a", 
      "Source": "/mnt/sda1/var/lib/docker/volumes/365e687c4e42a510878179962bea3c7699b020c575812c6af5a1718eeaf7b57a/_data", 
      "Destination": "/data/configdb", 
      "Driver": "local", 
      "Mode": "", 
      "RW": true 
     } 
    ], 

, wenn ich keine Datenvolumen eingestellt, Mongo Bild arbeiten können!

Aber, wenn Sie Datenvolumen einstellen, ist es nicht ... Wer kann mir helfen?

Antwort

11

Probieren und überprüfen Sie docker logs, um zu sehen, was vor sich ging, als der Container anhielt und in den "Existed" -Modus ging.

Siehe auch, wenn Sie den vollständigen Pfad für das Volumen helfen würde, die Angabe:

docker run -p 27017:27017 -v /home/<user>/data:/data/db ... 

Das OP ergänzt:

docker logs mongo 
exception in initAndListen: 98 
Unable to create/open lock file: /data/db/mongod.lock 
errno:13 Permission denied 
Is a mongod instance already running? 
terminating 2016-02-15T06:19:17.638+0000 
I CONTROL [initandlisten] dbexit: rc: 100 

Ein errno: 13 ist das, was issue 30 geht.

This comment ergänzt:

Es ist ein Datei Eigentum/Berechtigungsproblem (nicht zu diesem Docker Bild bezogen), entweder mit VB oder Vagabund-Box mit VB boot2docker.

Dennoch gelang es mir, das Eigentum zu hacken, /Users gemeinsamen Volumen innerhalb boot2docker Remon 999 bis uid und gid 999 (das sind, was mongo Docker Bild verwendet) und bekam es zu starten:

$ boot2docker ssh 
$ sudo umount /Users 
$ sudo mount -t vboxsf -o uid=999,gid=999 Users /Users 

Aber ...mongod stürzt wegen Dateisystemtyp nicht unterstützt wird (mmap nicht auf vboxsf Arbeits)

So ist die eigentliche Lösung wäre, eine DVC: Data Volume Container, zu versuchen, weil jetzt die mongodb doc erwähnt:

MongoDB erfordert ein Dateisystem das unterstützt fsync() auf Verzeichnissen.
Zum Beispiel, HGFS und Virtual Box freigegebene Ordner unterstützen diese Operation nicht.

So:

die auf OSX Montage wird für MongoDB nicht funktionieren, weil der Art und Weise, die gemeinsam genutzt VirtualBox Ordner arbeiten.


Für eine DVC (Data Volume Container), versuchen docker volume create:

docker volume create mongodbdata 

Dann ist es wie zu verwenden:

docker run -p 27017:27017 -v mongodbdata:/data/db ...  

Und sehen, ob das besser funktioniert.

Wie ich schon erwähnt, in the comments:

A docker volume inspect mongodbdata (docker volume inspect sehen) werden Sie den Weg geben (die Sie können dann Backup, wenn Sie benötigen)

+0

run docker logs mongo, - Ausnahme in initAndListen: 98 Sperrdatei kann nicht erstellt/geöffnet werden: /data/db/mongod.lock errno: 13 Berechtigung verweigert Wird eine mongod-Instanz bereits ausgeführt ?, beendigt 2016-02- 15T06: 19: 17.638 + 0000 I STEUERUNG [initandlisten] dbexit: rc: 100 –

+1

Wahrscheinlich ein Berechtigungsproblem dann – VonC

+0

, aber wie zu lösen? –

10

Ab Sommer 2017 ein lokales Volumen nicht berücksichtigt besten trainieren.

Docker Docs Per:

Volumes sind der bevorzugte Mechanismus für die erzeugten Daten durch und wird von Docker Behälter persistierenden.

docker volume create mongodbdata 
docker run -p 27017:27017 -v mongodbdata:/data/db mongo 
+0

Ich sehe diese Anweisung nicht mehr in docker docs. Könnten Sie bitte Ihre Antwort überprüfen und aktualisieren? – heroin

4

Via Docker Compose:

version: '2' 
    services: 
     mongodb: 
     image: mongo:latest 
     volumes: 
      - ./<your-local-path>:/data/db 

/data/db ist die Lage der auf dem Behälter gespeicherten Daten.

<your-local-path> ist der Speicherort auf Ihrer Maschine AKA der Host-Computer, wo die tatsächlichen Datenbank-Journal-Dateien gespeichert werden.

Verwandte Themen