2017-02-12 10 views
0

公式のMongoDBドッカーイメージをAWS EC2のVMにインストールしました。データベースには既にデータがあります。 VMを停止すると(一晩費やすために)、データベースに含まれるすべてのデータが失われますか?これらのシナリオで永続化するにはどうすればよいですか?データを失うことなくMongoDBドッカーイメージでVMを停止

答えて

3

あり、これを達成するための複数のオプションがあるが、2つの最も一般的な方法は次のとおりです。

  • データ
  • をマウントするホスト上のディレクトリを作成し、データ
をマウントするドッカ ボリュームを作成します。

1)ホストシステム上の適切なボリュームにデータディレクトリを作成します。 /my/own/datadir。このようなあなたのmongoコンテナを起動します。

$ docker run --name some-mongo -v /my/own/datadir:/data/db -d mongo:tag 

コマンドの-v /my/own/datadir:/data/db一部は、デフォルトではMongoDBはそのデータファイルを書き込みますコンテナ内/data/db、基盤となるホストシステムから/my/own/datadirディレクトリをマウントします。

SELinuxを有効にしているホストシステムのユーザーには、この問題があることに注意してください。

$ chcon -Rt svirt_sandbox_file_t /my/own/datadir 

これのソースはofficial documentation of the imageです:現在の回避策は、コンテナがそれにアクセスすることを許可するように、新しいデータディレクトリに関連するSELinuxのポリシータイプを割り当てることです。

2)別の可能性は、ドッカーボリュームを使用することです。

$ docker volume create my-volume 

これで、フォルダ/var/lib/docker/volumes/my-volumeにドッカーボリュームが作成されます。あなたとあなたのコンテナを起動することができます今:

docker run --name some-mongo -v my-volume:/data/db -d mongo:tag 

すべてのデータはフォルダ/var/lib/docker/my-volumeでそうmy-volumeに保存されます。したがって、コンテナを削除して、このボリュームにリンクされた新しいmongoコンテナを作成しても、データは新しいコンテナにロードされます。

初期docker runコマンドを実行するときに、--restart=alwaysオプションを使用することもできます。これは、コンテナがVMの再起動後に自動的に再起動することを意味します。データを永続化しても、再起動の前または後にDBの違いはありません。

関連する問題