2017-01-26 17 views
1

データボリュームとデータコンテナの違いはわかりません... たとえば、この2つのドッカー構成のコンフィグレーションでは同じ結果が得られますが、最初のデータコンテナはDocker - データボリュームとデータコンテナの違い

データコンテナなし

聖霊降臨祭のデータコンテナ

datacontainer: 
image: httpd:2.4-alpine 
volumes: 
    - ../src:/usr/local/apache2/htdocs 

apache: 
image: httpd:2.4-alpine 
ports: 
    - 80:80 
volumes_from: 
    - datacontainer 

apache: 
image: httpd:2.4-alpine 
ports: 
    - 80:80 
volumes: 
    - ../src:/usr/local/apache2/htdocs 

使用しての長所と短所は何ですかデータコンテナ?

+0

最初の例は、データコンテナの動作方法ではありません – tkausl

+0

適切な使い方は何ですか? – hellb0y77

+0

彼らはデータをそこに格納することになっています。あなたの最初のcompose ymlでは、あなたのapacheは単に "外部に"ボリュームを継承し、データコンテナが決して存在しないかのように、すべてをホストに保存します。 – tkausl

答えて

3

これらの例のいずれも実際にはデータボリュームまたはデータコンテナではありません。それらは両方ともホストへのバインドマウントであり、もう一方は間接的にマウントされます。私はそれらをホストボリュームと呼ぶ傾向があります。

名前付きボリュームに対してデータコンテナが推奨されなくなりました。そして、あなたがApacheのコンテナを再作成、またはそれをアップグレードし、データコンテナをアップグレードせず、まだあなたのデータが利用可能かもしれない

datacontainer: 
image: httpd:2.4-alpine 
command: tail -f /dev/null 
volumes: 
    - /data 

apache: 
image: httpd:2.4-alpine 
ports: 
    - 80:80 
volumes_from: 
    - datacontainer 

:彼らは次のようになります。これには複数の欠点があり、画像Iに定義されている音量で実装された場合は、I posted a blog about just how much I dislike thatとなります。しかし、最大の問題は、データをコンテナとして管理していることです。そのため、コンテナのクリーンアップルーチンはデータを均等にクリーンアップします。

名前付きボリュームは、データコンテナのすべての機能を備えていますが、データ管理とコンテナ管理を分離しているため、コンテナをパージしたり、データを1か所からバックアップしたりできます。それらは次のようになります:

apache: 
image: httpd:2.4-alpine 
ports: 
    - 80:80 
volumes: 
    - data:/data 

コンパイルのバージョン2では、音量の定義に特化しています。

0

データコンテナパターンはデータの永続性を考慮して設計されていますが、Docker 1.9では名前付きボリュームではほとんど廃止されています。ボリュームとデータコンテナパターンの主な利点は、ホスト上のバインドマウントがホスト依存であることです。つまり、ドッカーファイルでそのバインドを使用できないということです。ボリュームを使用すると、イメージを構築するときにボリュームを柔軟に定義できます。

さらに、データボリュームは、コンテナのライフサイクルとは独立してデータを保持するように設計されています。したがって、Dockerは、コンテナを削除すると自動的にボリュームを削除することも、コンテナによって参照されなくなったボリュームを「ガベージコレクト」することもありません。

関連する問題