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)