sql >> Databáze >  >> NoSQL >> MongoDB

Jak nastavit objem dat docker mongo

Zkuste zkontrolovat protokoly dockeru, abyste viděli, co se dělo, když se kontejner zastavil a přešel do režimu „Existed“.

Podívejte se také, zda by pomohlo zadání úplné cesty ke svazku:

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

OP dodává:

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 

Chyba:13 je téma 30.

Tento komentář dodává:

Jde o problém s vlastnictvím souboru/oprávněním (nesouvisející s tímto obrazem dockeru), ať už používáte boot2docker s VB, nebo vagrant box s VB.

Přesto se mi podařilo hacknout vlastnictví a znovu připojit /Users sdílený svazek uvnitř boot2dockeru na uid 999 a gid 999 (které používá obraz mongo docker) a začalo to:

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

Ale... mongod padá kvůli nepodporovanému typu souborového systému (mmap nefunguje na vboxsf)

Skutečným řešením by tedy bylo vyzkoušet DVC:Data Volume Container , protože právě teď mongodb doc zmiňuje:

MongoDB vyžaduje souborový systém, který podporuje fsync() v adresářích.
Například sdílené složky HGFS a Virtual Box tuto operaci nepodporují.

Takže:

připojení k OSX nebude fungovat pro MongoDB kvůli způsobu, jakým fungují sdílené složky virtualboxu.

V případě kontejneru DVC (Data Volume Container) vyzkoušejte docker volume create :

docker volume create mongodbdata

Poté jej použijte jako:

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

A uvidíte, jestli to funguje lépe.

Jak zmiňuji v komentářích:

docker volume inspect mongodbdata (viz docker volume inspect ) vám dá svou cestu (kterou pak můžete zálohovat, pokud potřebujete)



  1. TypeError:db.collection není funkce

  2. Propojení kontejneru Redis s jiným kontejnerem (Docker)

  3. findOne Subdocument v Mongoose

  4. Skript pro odstranění zástupných znaků Redis pomocí EVAL, SCAN a DEL vrací příkazy zápisu, které nejsou povoleny po nedeterministických příkazech