ボリュームを使用してmongodataを永続化するにはどうすればよいですか?

HelloDoris

私はMongoDBのコンテナがデータベースを作成するには、ホストJSONファイルを使用したかった、と一度、モンゴの画像のすべてのコンテナが後でit.Iが考え共有することができます作成bind mountし、volume動作する可能性があり、これらの次のステップは、私はそれに対処する方法を示しています。

  • 最初に、この構造で、jsonファイルdoc_info_product.jsonと名前付きボリュームmymongo_datamongomongoイメージのコンテナー名にマウントしました docker run -d --name mongo --mount type=bind,source=V:\repository\How-to\doc_info_product.json,target=/data/db/doc_info.json -v mymongo_data:/data mongo:latest
  • 次に、実行して、jsonファイルmongoを使用mongoimportしてデータベースを作成します。 docker exec -it mongo bash /# mongoimport --db mydb --collection doc --type json --file /data/db/doc_info.json --jsonArray
  • 今ではmongo、コンテナ、私は、データベース名だったmydbと収集をdocしてチェックすると、それにshow dbsしてshow collections

  • 次に、mongo2ランチと呼ばれる別のコンテナもマウントされましたmymongo_data docker run -d -v mymongo_data:/data --name mongo2 mongo:latest

しかし、チェックmongo2してみたところshow dbs、取得mydbできませんでした。では、どうすればmydb別のコンテナに入れることができ、なぜ取得できなかったのでしょうか。

dpwr

編集:私はもともと非モンゴ固有の観点からこれに答えましたが、ホストとして非Linuxを使用する場合、実際にはモンゴ固有の問題であることに気付きました:https//hub.docker.com/_/mongo //

警告(WindowsおよびOS X):WindowsおよびOS XのデフォルトのDockerセットアップは、VirtualBoxVMを使用してDockerデーモンをホストします。残念ながら、VirtualBoxがホストシステムとDockerコンテナー間でフォルダーを共有するために使用するメカニズムは、MongoDBで使用されるメモリマップファイルと互換性がありません(vboxのバグ、docs.mongodb.orgおよび関連するjira.mongodb.orgのバグを参照)。これは、データディレクトリがホストにマップされた状態でMongoDBコンテナを実行できないことを意味します。

これを回避する方法は、ホストからのマウントの代わりにDockerボリュームを使用することです。

# Create a volume for persistent data
$ docker volume create mongodata
mongodata

# Start the mongo container, mount the db volume and
# also my downloads directory as a place to get a file to import
$ docker run -d --name mongo -v mongodata:/data/db \
  -v ~/Downloads/:/json mongo:latest
0755cc15f7550dce7fc4bef28da90216a95d5763df98518786533b6314c231d7

# Exec into the container and do the import
$ docker exec -it mongo bash
root@0755cc15f755 :/# mongoimport --db mydb --collection doc \
  --type json --file /json/test.json
2018-04-28T14:32:49.102+0000    connected to: localhost
2018-04-28T14:32:49.118+0000    imported 1 document

# Show the db is present and exit
root@0755cc15f755:/# mongo
> show dbs
admin  0.000GB
local  0.000GB
mydb   0.000GB
>
bye
root@0755cc15f755:/# exit

# After exiting the exec, stop the first container
$ docker stop mongo
mongo

# Start a new container using the same volume for data
$ docker run -d --name mongo2 -v mongodata:/data/db mongo:latest
b6bda766217c6fe4ed355c1faaa5880471b6841eb68c8dd75a3cb72aa5c39ff5

# Exec into this
$ docker exec -it mongo2 bash

# Show the data is still there!
root@b6bda766217c:/# mongo
> show dbs
admin  0.000GB
local  0.000GB
mydb   0.000GB

ネイティブLinuxを使用していないことを考えると、これが最善の策です。

警告: mongoについては、何が起こるかを確実に知るには十分な知識がありませんが、一般に、同じデータディレクトリで2つのデータベースを同時に実行することは非常に悪い考えです。mongoはロックイン/data/db使用してこれが発生していることを検出し、それに応じて動作する場合とそうでない場合があります。したがって、そうすることを考えている場合は、常に明示的にする方がよいでしょう。1つを除くすべてのコンテナに、データディレクトリが読み取り専用でマウントされていることを確認してくださいこれを行うに:roは、ボリュームマウントの最後に次のように追加-v mongodata:/data/db:roます。

また、これをテストするためのWindowsにアクセスできませんが、JSONファイルで行うことであるコンテナーへのファイルのマウントに問題があることもわかります。これにより、コンテナに空のボリュームマウントが作成されると思います。代わりに、私が行ったように実行し、JSONファイル自体ではなくJSONファイルを含むディレクトリをマウントします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

AWS EFSとReadWriteManyを使用して永続ボリュームの要求を構成するにはどうすればよいですか?

分類Dev

ホストマシンのパスを使用するように永続ボリュームを変更するにはどうすればよいですか?

分類Dev

*信頼性の高い*永続ボリュームにPVとPVCを使用するにはどうすればよいですか?

分類Dev

Kubernetesを使用してホームディレクトリファイルを新しい永続ボリュームにコピーするにはどうすればよいですか?

分類Dev

手動でプロビジョニングされたAzure管理対象ディスクをKubernetes永続ボリュームとして使用するように構成するにはどうすればよいですか?

分類Dev

データベースに使用したEBS永続ボリュームを削除せずにkopsを使用してkubernetesクラスターを削除するにはどうすればよいですか?

分類Dev

新しいボリュームを接続した後にルートボリュームを拡張するにはどうすればよいですか?

分類Dev

MinikubeでhostPath永続ボリュームを適切に設定するにはどうすればよいですか?

分類Dev

社内のkubernetesクラスターで永続ボリュームを作成するにはどうすればよいですか

分類Dev

DockerボリュームをGoogleComputeEngineの永続ディスクにマッピングするにはどうすればよいですか

分類Dev

JupyterHubの永続ボリューム(PV)をKubernetesにデプロイするにはどうすればよいですか?

分類Dev

gcePDを作成し、それを永続ボリュームとしてオンプレミスのk8sクラスターにリンクするにはどうすればよいですか?

分類Dev

OSXをQNAPTime Machineボリュームに接続するにはどうすればよいですか?

分類Dev

Firebase更新トークンを使用してユーザー認証を永続化するにはどうすればよいですか?

分類Dev

UIAlertController内のUITextFieldに入力したデータをSwiftのリセットを通じて永続化するにはどうすればよいですか?

分類Dev

AppDelegateでCoreDataの永続コンテナーを初期化し、アプリ全体で使用するにはどうすればよいですか?

分類Dev

NSUserDefaultを永続化するにはどうすればよいですか?

分類Dev

Akka永続クエリを使用してすべてのジャーナルイベントを取得するにはどうすればよいですか?

分類Dev

どのコンテナがDockerボリュームを使用しているかを判断するにはどうすればよいですか?

分類Dev

どのコンテナがDockerボリュームを使用しているかを判断するにはどうすればよいですか?

分類Dev

Pythonで3Dボリュームを視覚化するにはどうすればよいですか?

分類Dev

HTTPUrlConnectionを使用するときにCookieを永続化するにはどうすればよいですか?

分類Dev

コードを使用してカスタムBizTalk永続ポイントを追加するにはどうすればよいですか?

分類Dev

メールボックスアイテムをEWSに永続化するにはどうすればよいですか?

分類Dev

リモート応答によって返されたデータを永続化するにはどうすればよいですか?

分類Dev

autosshを使用して永続的なリバースSSHトンネルを取得するにはどうすればよいですか?

分類Dev

すべてのDockerボリュームを削除するにはどうすればよいですか?

分類Dev

論理ボリュームを使用しているものを確認するにはどうすればよいですか?

分類Dev

新しい物理ボリュームを追加して、既存のLUKSで暗号化されたlvm(ボリュームグループ)を拡張し、暗号化を維持するにはどうすればよいですか?

Related 関連記事

  1. 1

    AWS EFSとReadWriteManyを使用して永続ボリュームの要求を構成するにはどうすればよいですか?

  2. 2

    ホストマシンのパスを使用するように永続ボリュームを変更するにはどうすればよいですか?

  3. 3

    *信頼性の高い*永続ボリュームにPVとPVCを使用するにはどうすればよいですか?

  4. 4

    Kubernetesを使用してホームディレクトリファイルを新しい永続ボリュームにコピーするにはどうすればよいですか?

  5. 5

    手動でプロビジョニングされたAzure管理対象ディスクをKubernetes永続ボリュームとして使用するように構成するにはどうすればよいですか?

  6. 6

    データベースに使用したEBS永続ボリュームを削除せずにkopsを使用してkubernetesクラスターを削除するにはどうすればよいですか?

  7. 7

    新しいボリュームを接続した後にルートボリュームを拡張するにはどうすればよいですか?

  8. 8

    MinikubeでhostPath永続ボリュームを適切に設定するにはどうすればよいですか?

  9. 9

    社内のkubernetesクラスターで永続ボリュームを作成するにはどうすればよいですか

  10. 10

    DockerボリュームをGoogleComputeEngineの永続ディスクにマッピングするにはどうすればよいですか

  11. 11

    JupyterHubの永続ボリューム(PV)をKubernetesにデプロイするにはどうすればよいですか?

  12. 12

    gcePDを作成し、それを永続ボリュームとしてオンプレミスのk8sクラスターにリンクするにはどうすればよいですか?

  13. 13

    OSXをQNAPTime Machineボリュームに接続するにはどうすればよいですか?

  14. 14

    Firebase更新トークンを使用してユーザー認証を永続化するにはどうすればよいですか?

  15. 15

    UIAlertController内のUITextFieldに入力したデータをSwiftのリセットを通じて永続化するにはどうすればよいですか?

  16. 16

    AppDelegateでCoreDataの永続コンテナーを初期化し、アプリ全体で使用するにはどうすればよいですか?

  17. 17

    NSUserDefaultを永続化するにはどうすればよいですか?

  18. 18

    Akka永続クエリを使用してすべてのジャーナルイベントを取得するにはどうすればよいですか?

  19. 19

    どのコンテナがDockerボリュームを使用しているかを判断するにはどうすればよいですか?

  20. 20

    どのコンテナがDockerボリュームを使用しているかを判断するにはどうすればよいですか?

  21. 21

    Pythonで3Dボリュームを視覚化するにはどうすればよいですか?

  22. 22

    HTTPUrlConnectionを使用するときにCookieを永続化するにはどうすればよいですか?

  23. 23

    コードを使用してカスタムBizTalk永続ポイントを追加するにはどうすればよいですか?

  24. 24

    メールボックスアイテムをEWSに永続化するにはどうすればよいですか?

  25. 25

    リモート応答によって返されたデータを永続化するにはどうすればよいですか?

  26. 26

    autosshを使用して永続的なリバースSSHトンネルを取得するにはどうすればよいですか?

  27. 27

    すべてのDockerボリュームを削除するにはどうすればよいですか?

  28. 28

    論理ボリュームを使用しているものを確認するにはどうすればよいですか?

  29. 29

    新しい物理ボリュームを追加して、既存のLUKSで暗号化されたlvm(ボリュームグループ)を拡張し、暗号化を維持するにはどうすればよいですか?

ホットタグ

アーカイブ