ドッカーのストレージボリューム

あなたは、ストレージボリュームが必要な理由

容器を開始するときの読み取り専用オーバーレイ複数の形成ドッカー画像は、ドッカー負荷は読み取りのみの画像層とリーダスタックミラーの上に層を追加します。
あなたは、コンテナで実行されている場合は、すでに存在している既存のファイルを変更したファイルは読み書き層への層の下に層を読み書きする読み取り専用からコピーされます、そして、ファイルの読み取り専用バージョンがまだそこにあるが、リードされましたファイルの層のコピーが隠されている、これはコピー(COW)書き込みメカニズム。

データストレージの問題

ドッカーコンテナは、データ、以下のような問題点を保存します:

  • ユナイテッドは、ファイルシステム、ホストへの容易なアクセスに保存されています
  • コンテナの不便間のデータ共有
  • そのデータは、コンテナを失われます削除します。

閉じると、コンテナを再起動し、コンテナデータは影響を受けません。変更が失われる前に、しかし、コンテナが削除されます。

ソリューション:音量(ボリューム)、またはストレージ・ボリュームを容易にするためには、区別と呼ばれています。
ボリュームは、容器上に1つ以上のディレクトリであり、このようなジョイントは、ファイル・システム・ディレクトリをバイパスすることができ、ホスト上のディレクトリ結合(会合)。

データボリューム

コンテナが初期化されるとき、ボリュームが作成され、コピーの基地画像によって提供されるデータの量は、この期間を終了します。

Volumnの心は、それはボリュームがガベージコレクションの操作を参照していない場合でも、あなたがコンテナを削除すると、ボリュームは削除されません、船舶のライフサイクルデータの永続性とは独立して、もう。

ボリュームドッカーは、別個のコンテナデータ管理機構を提供します。

  • このようなプログラムとして、静止画像ファイルと考えることができます。データなどの動的なコンテンツ、体積類推。このように、ミラーを再利用することができ、かつボリュームが共有することができます
  • 実現プログラム(画像)データおよび(体積)を分離および単離ホストプログラム(ミラー)およびミラー。ユーザーを反映したホスト血管ミラー環境を考慮する必要はありません。

容器に使用されるボリューム

さて、あなたは関連するオプションのボリュームを持つコンテナを作成するとき。

ボリュームタイプ

ロールドッカーの2種類があり、それぞれのタイプは、コンテナ内のマウントポイントが、別のホスト上の位置があります:

  • ボリュームマウントバインド:ディレクトリやコンテナのホストが指定する必要が
  • ドッカー管理ボリューム:容器内のディレクトリを指定する必要性が、ホストドッキングウィンドウ上のディレクトリによって維持されています

ドッキングウィンドウは、-vオプションを使用してコマンドを実行すると、あなたは、ボリュームを使用することができます。

ドッカー管理ボリューム

コンテナおよび結合したボリュームを作成するには、セッションを開きます。

$ docker run --name v1 --rm -it -v /data busybox

ホストディレクトリ上で動作
問い合わせは、別のセッションでは、コンテナが、より多くのコンテンツを検査します。ボリュームは情報量で見ることができます。

            "Volumes": {
                "/data": {}
            },

-fパラメータを使用すると、マウントの内容を見て、マウントの情報ポイントがあります。

$ docker inspect -f '{{json .Mounts}}' v1
[{"Type":"volume","Name":"bdd48fb729e802b7d3a067da74b748037e83ff770a84f7215c657f6cc2af2c9d","Source":"/var/lib/docker/volumes/bdd48fb729e802b7d3a067da74b748037e83ff770a84f7215c657f6cc2af2c9d/_data","Destination":"/data","Driver":"local","Mode":"","RW":true,"Propagation":""}]
$ 

ソースフィールドにホスト自動的に割り当てられるパスボリューム、ダイレクトコールのパスを取得する以下の方法およびlsコマンド:

$ docker inspect -f '{{range .Mounts}}{{.Source}} {{end}}' v1 | xargs ls
$ docker inspect -f '{{with index .Mounts 0}}{{.Source}}{{end}}' v1 | xargs ls

アレイ内のマウントは、複数のマウントポイントが存在してもよいです。最初のコマンドラインは、すべてのディレクトリをトラバースされ、二行目の出力は、最初のディレクトリでコマンド。
ディレクトリは、マウントポイントをコンテナとホストがデータを共有することができます。ホストマシン内のディレクトリのコンテナは、見ることができます。逆に、ディレクトリを変更するには、ホスト・マシンでは、コンテナを表示することが可能です。

ミラーを削除する
コンテナが停止されると、コンテナは自動的に削除されるように、--rmパラメータを使用するコンテナを作成するコマンドの上。容器を取り外し、ドッカー管理ボリュームも削除させていただきます。
これは、コンテナが除去されるボリューム内に格納されたデータはまだ失われます、一時的なボリュームです。データコンテナのオブジェクトが持続解決するものではないが、現在のデータコンテナは、共有ホストすることができ、およびI / Oに格納されたデータを直接ホストファイルシステムによって決定されます。追加の利点は、ユーザーがこのボリュームを管理する必要がないこと、ボリュームデータの一時メモリが削除された容器のリリースで削除されています。しかし、外側の容器に使用するのに適した一時的なデータストレージを共有する必要があります。

バインドマウントVolme

またはパラメータが前に使用されるが、コンテンツ-vパラメータはコロンで区切られた2つの部分、ディレクトリ及びホストのボリュームのディレクトリに提供されます:-v HOSTDIR:VOLUMEDIR

バインドバインドマウントVolmeは、
コンテナを作成するためのセッションを開き、バインドマウントVolmeをバインドします。

$ docker run --name v2 --rm -it -v ~/data/volumes/v2:/data busybox

あなたはまだ実証することはない、ここで、詳細を確認するためにコマンドを検査ドッキングウィンドウを使用することができます。
ホストが存在しない場合は、ここで指定したパスは、ドッキングウィンドウが自動的に作成されます。

コンテナを削除する
コンテナ後にホスト上のファイルを削除し残ります。コンテナは削除した後、このデータの実現には、まだ使用することができます。

共有ボリューム

ドッキングウィンドウは、それが言われているボリューム2の2種類があり、以前に述べました。ここで、共有ボリュームの特定の種類は、それが2つのだけの方法の同じボリュームを共有するコンテナ間実現され、本質的に上記二種類あります。

その他の容器の容積が同じホストディレクトリ使用し
ても問題ありません、ホスト上の同じディレクトリには、複数の容器を使用することを許可されています。

他のコンテナ使用してボリュームコピー
--volumes-からオプションを使用します:

$ docker run --name v3.0 --rm -itd -v /data busybox
e24397fffb44717a7f140010c829ec88f540ed7d95f7c8fb328a35a819becfb0
$ docker run --name v3.1 --rm -itd --volumes-from v3.0 busybox
28543eb6fc13e972a000ab955b9623630ebb9d90c8d3dc37a8b7608f24188926
$ docker container attach v3.0
/ # touch /data/test_v3_0
/ # exit
$ docker container attach v3.1
/ # ls /data
test_v3_0
/ # exit
$ 

バインドマウントVolmeが同じであるためここでは、複製ドッカー管理ボリュームの一例です。

共有ネットワークの
ネットワークはまた、提携ネットワークを共有することができます。ここで、ボリュームを共有することができます。いくつかのシナリオでは、2つの以上の容器があり、同じネットワークを共有し、同じボリュームを共有する必要があるかもしれません。

おすすめ

転載: blog.51cto.com/steed/2422611