sql >> データベース >  >> NoSQL >> MongoDB

DockerMongoのデータ量を設定する方法

    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 mongodbdatadocker volume inspectを参照してください )パスが表示されます(必要に応じてバックアップできます)



    1. キーが存在する場合はHSET

    2. MongoDB:複数のコレクションからのデータを1つに結合します。

    3. MongoDBは複数のコレクションにマップ/リデュースしますか?

    4. このスキーマをMongoDBに実装するにはどうすればよいですか?