Dockerログをチェックして、コンテナが停止し、「既存」モードになったときに何が起こっていたかを確認してください。
ボリュームのフルパスを指定すると役立つかどうかも確認してください。
docker run -p 27017:27017 -v /home/<user>/data:/data/db ...
OPは次を追加します:
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
errno:13は、問題30に関するものです。
このコメントは次のように追加します:
これは、ファイルの所有権/許可の問題(このDockerイメージとは関係ありません)であり、VBでboot2dockerを使用するか、VBでvagrantboxを使用します。
それでも、所有権をハックして、boot2docker内の/Users共有ボリュームをuid999とgid999(mongo dockerイメージが使用するもの)に再マウントしました 開始しました:
$ boot2docker ssh
$ sudo umount /Users
$ sudo mount -t vboxsf -o uid=999,gid=999 Users /Users
しかし...ファイルシステムタイプがサポートされていないためにmongodがクラッシュします(mmapがvboxsfで機能しません)
したがって、実際の解決策は、 DVC:データボリュームコンテナを試すことです。 、現在、mongodbのドキュメントで次のように言及されているためです:
MongoDBには、
fsync()
をサポートするファイルシステムが必要です。 ディレクトリ上。
たとえば、HGFSとVirtualBoxの共有フォルダはこの操作をサポートしていません。
だから:
Virtualbox共有フォルダの動作方法が原因で、MongoDBではOSXへのマウントは機能しません。
DVC(データボリュームコンテナ)の場合は、docker volume create
を試してください。 :
docker volume create mongodbdata
次に、次のように使用します:
docker run -p 27017:27017 -v mongodbdata:/data/db ...
そして、それがうまくいくかどうかを確認してください。
コメントで述べたように:
docker volume inspect mongodbdata
(docker volume inspect
を参照してください )パスが表示されます(必要に応じてバックアップできます)