sql >> Database >  >> NoSQL >> MongoDB

Docker mongo-gegevensvolume instellen

Probeer docker-logboeken te controleren om te zien wat er aan de hand was toen de container stopte en ga naar de modus "Bestaand".

Kijk ook of het specificeren van het volledige pad voor het volume zou helpen:

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

De OP voegt toe:

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 

Een errno:13 is waar nummer 30 over gaat.

Deze opmerking voegt toe:

Het is een probleem met eigendom/toestemming van bestanden (niet gerelateerd aan deze docker-image), ofwel met boot2docker met VB of een zwervende box met VB.

Desalniettemin slaagde ik erin om het eigendom te hacken, het opnieuw koppelen van het /Users gedeelde volume in boot2docker naar uid 999 en gid 999 (wat de mongo docker-afbeelding gebruikt) en kreeg het om te beginnen:

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

Maar... mongod crasht omdat het bestandssysteemtype niet wordt ondersteund (mmap werkt niet op vboxsf)

De daadwerkelijke oplossing zou dus zijn om een ​​DVC:Data Volume Container . te proberen , omdat op dit moment de mongodb-doc vermeldt:

MongoDB vereist een bestandssysteem dat fsync() ondersteunt op mappen.
Bijvoorbeeld, de gedeelde mappen van HGFS en Virtual Box ondersteunen deze bewerking niet.

Dus:

de koppeling naar OSX werkt niet voor MongoDB vanwege de manier waarop de gedeelde mappen van virtualbox werken.

Voor een DVC (Data Volume Container), probeer docker volume create :

docker volume create mongodbdata

Gebruik het dan als:

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

En kijk of dat beter werkt.

Zoals ik in de opmerkingen vermeld:

Een docker volume inspect mongodbdata (zie docker volume inspect ) zal je het pad geven (dat je dan kunt back-uppen als je dat nodig hebt)



  1. opdrachtregelauthenticatie van mongo mislukt

  2. MongoDB $reverseArray

  3. Spring Boot-integratietesten met Embedded MongoDB

  4. Hoe Redis van Node.js te gebruiken