Versuchen Sie, die Docker-Protokolle zu überprüfen, um zu sehen, was vor sich ging, als der Container gestoppt wurde, und gehen Sie in den Modus „Existed“.
Siehe auch, ob es hilfreich wäre, den vollständigen Pfad für das Volume anzugeben:
docker run -p 27017:27017 -v /home/<user>/data:/data/db ...
Das OP fügt hinzu:
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
Eine errno:13 ist das, worum es in Ausgabe 30 geht.
Dieser Kommentar fügt hinzu:
Es handelt sich um ein Dateieigentums-/Berechtigungsproblem (nicht im Zusammenhang mit diesem Docker-Image), entweder bei Verwendung von boot2docker mit VB oder einer Vagrant-Box mit VB.
Trotzdem gelang es mir, den Besitz zu hacken, indem ich das freigegebene Volume /Users in boot2docker auf uid 999 und gid 999 (die das Mongo-Docker-Image verwendet) neu einbindet und zum Starten gebracht:
$ boot2docker ssh
$ sudo umount /Users
$ sudo mount -t vboxsf -o uid=999,gid=999 Users /Users
Aber... mongod stürzt ab, weil der Dateisystemtyp nicht unterstützt wird (mmap funktioniert nicht auf vboxsf)
Die eigentliche Lösung wäre also, einen DVC:Data Volume Container auszuprobieren , denn im Moment erwähnt das Mongodb-Dokument:
MongoDB erfordert ein Dateisystem, das fsync()
unterstützt in Verzeichnissen.
Zum Beispiel unterstützen die freigegebenen Ordner von HGFS und Virtual Box diesen Vorgang nicht.
Also:
Das Mounten in OSX funktioniert für MongoDB aufgrund der Funktionsweise von Virtualbox-Freigabeordnern nicht.
Versuchen Sie für einen DVC (Data Volume Container) docker volume create
:
docker volume create mongodbdata
Verwenden Sie es dann als:
docker run -p 27017:27017 -v mongodbdata:/data/db ...
Und sehen Sie, ob das besser funktioniert.
Wie ich in den Kommentaren erwähne:
Ein docker volume inspect mongodbdata
(siehe docker volume inspect
) gibt Ihnen den Pfad an (den Sie dann bei Bedarf sichern können)