2017-01-12 6 views
0

たとえば、データベース(couchdbなど)をドッキングしようとしているとします。 はその後、あなたがボリュームを考慮し、少なくとも2つのアセットがあります。ドッカーのボリュームコンテナ戦略

  • データベースファイル
  • ログファイル

レッツさらにあなたはプライベートDB-ファイルを保存しておきたいが、ログを公開したいと言います - 後で処理するためのファイル。

私はドキュメントをundestand限り、あなたは、2つのオプションがあります。

  1. 最初のオプションを

    • 両方の管理対象ボリュームを定義し、DB-画像
    • 内の対数とDB-ファイル
    • これらを2番目のコンテナにインポートします(両方を取得します)。ログを使用して作業します。
  2. 番目のオプション

    • デシベルを実行しているときに、データコンテナからDB-ファイルのみ
    • インポートログ・ボリュームの管理ボリュームとDB-画像を作成するログ
    • の管理対象ボリュームとデータコンテナを作成します-image

つの質問:

  1. 両方のオプションは本当に有効/可能ですか?
  2. これを行うにはどうすればよいですか?

ブロードのフォルカー・

答えて

0

は1を質問への答えはイエスの両方が有効と考えられる、ということです。

質問2への私の答えは、私が別のアプローチを完全に検討し、これがミッションクリティカルなシステムであり、データ損失を避ける必要があるかどうかによって異なります。

重要

ミッションあなたは絶対にあなたのデータを失うことができない場合は、私はあなたのデータベースコンテナに信頼性の高いディスクをマウント結合することをお勧めします。バインドマウントは基本的にDocker Hostファイルシステムの一部をコンテナにマウントしています。

だから、例として、データベースファイルを取って、次の手順イメージができます

  1. は、信頼性の高いディスクなどを作成します。
  2. このディスクをDockerホストに接続します。
  3. このディスクをデータベースコンテナにマウントし、このディスクにデータベースファイルを書き込みます。

したがって、NFSで共有され、Dockerホストの/reliable/diskにマウントされた信頼性の高いディスクを作成したとします。私のデータベースと私は、次のドッカーコマンドを実行することを使用するには:

docker run -d -v /reliable/disk:/data/db my-database-image

私は、データベース・ファイルは、信頼性の高いストレージに書き込まれることを知っているこの方法を。私がDocker Hostを失ったとしても、私はまだデータベースファイルを持ち、NFS共有にアクセスできる別のホストでデータベースコンテナを実行することで簡単に回復できます。

データベース・ログにまったく同じことを行うことができます。

docker run -d -v /reliable/disk/data/db:/data/db -v /reliable/disk/logs/db:/logs/db my-database-image

また、あなたは簡単に別のタスクのために他の容器にこれらのボリュームをマウントするバインドできます。

docker run -d -v /reliable/disk/logs/db:/logs/db:ro my-log-processor

これは、ミッションクリティカルなシステムである場合、これは私の推奨されるアプローチのようになります。あなたは読み取り専用他の容器にあなたのデータを保護するために、それらを取り付けるバインド検討する必要があります。

ない

ミッションクリティカルシステムは、ミッションクリティカルではないですし、データ損失の高い可能性を許容できるならば、私はあなたがやりたいことのために正確に使用されているDocker Volume APIになります管理コンテナのライフサイクルを超えて生きるべきデータ用のボリュームを作成することです。

docker volumeコマンドのいいところは、それはあなたが名前のボリュームを作成することができますし、あなたがそれらをよく名前ならば、それは、彼らがために使用されているものを人々に非常に明白にできることである。

docker volume create db-data docker volume create db-logs

あなたが、その後することができますコマンドラインから容器にこれらのボリュームをマウントします。

docker run -d -v db-data:/db/data -v db-logs:/logs/db my-database-image

これらのボリュームは、あなたのコンテナとのライフサイクルを超えて存続しますDockerホストの場合はファイルシステムに保存されます。あなたは使用することができます。

docker volume inspect db-data

をデータが格納されている場所を見つけるとバックアップその場所をあなたがしたい場合には。

Docker Composeのようなものを見ると、すべてを1つのファイルに宣言してから、1つのコマンドで環境全体を作成することもできます。