2015-12-07 6 views

答えて

7

Dockerfileでボリュームを定義しても、ボリュームはデフォルトでホストに公開されません。代わりに、他のコンテナが他のDockerコンテナのボリュームにリンクできるようにリンクされたボリュームを設定します。これは、データを永続化する唯一の目的でコンテナを開始する「データコンテナ」構成でよく使用されます。ここに簡単な例があります:

docker run -d --name docker_data docker/image1 
docker run -d --volumes-from docker_data --name new_container docker/image2 

フラグは--volumes-fromです。

さらに詳しい説明はhttp://container-solutions.com/understanding-volumes-docker/を参照してください。

2

許容される回答に加えて、ボリュームを使用するための別の考慮事項はのパフォーマンスです。通常、Dockerで使用される階層化されたファイルシステム(通常、使用しているLinuxディストリビューションに応じて、AUFSまたはDevicemapper)は高速ではなく、ハイスループットのシナリオ(データベースやキャッシュディレクトリなど)でボトルネックになることがあります。 。

ボリュームは、ホストディレクトリに明示的にマップされていなくても、ホストファイルシステムへの単純なバインドマウントであり、データ書き込み時に高いスループットを実現します。さらに読書のために

は、interesting paper by IBMがドッカーボリューム(強調鉱山)を使用した場合のパフォーマンスへの影響について、いくつかの興味深い結論を含む、このトピックにあります:

AUFSは は驚くべきことではない大きなオーバーヘッドを紹介しますI/Oはいくつかの層を通過しているので[...]。 ファイルシステムまたはディスクを使用するアプリケーションは、ボリュームを使用してAUFS をバイパスする必要があります。 [...] コンテナ自体にオーバーヘッドはほとんどありませんが、 Dockerにはパフォーマンスの問題がありません。 ドッカーボリューム は、AUFSに格納されているファイルよりもはるかに優れたパフォーマンスを示します。

関連する問題