転送 https://www.jianshu.com/p/ef0f24fd0674
ドッカーデータの永続性、主に二つの方法があります。
- バインドマウント
- ボリューム
ドッカーデータコンテナ、ホストマシン上のデータの存在の終わりで終了されていない永続的なデータ - のいずれかの指定されたディレクトリが、彼らは、ボリュームを管理ドッカ(バインドマウントを使用)、または使用ホストの中に存在している(の/ var下/ libに/ドッカ/体積)。
バインドマウント
初期のドッキングウィンドウの人々がコンテナをマウントするホスト・マシンのディレクトリに使用し始めたので、バインドマウント。しかし、同じではないように、WindowsとLinuxのディレクトリ構造など、ポータブルでない別のホスト・システムにマウントし、バインド同じにすることはできませんホストディレクトリにマウントポイントをバインドします。それはDockerfile移植ではないので、これは、また、バインドはDockerfileにマウント表示されない理由です。
コンテナ/コンテナデータディレクトリをマウントするホストマシン上の現在のディレクトリにホストのデータディレクトリ:
ドッキングウィンドウの実行-it -v $(PWD)/ホスト-DAVA:/コンテナデータ高山SH
ノートには、いくつかのポイントがあります。
- ディレクトリパス必見のホスト・マシン(正確なフルパスする必要性を避ける
/
か、~/
始まるパス)、それ以外の場合は、ドッキングウィンドウのボリュームではなく、ボリューム処理のようになります - ディレクトリは、ホスト・マシン上に存在しない場合は、ドッキングウィンドウは自動的にディレクトリが作成されます
- ディレクトリ内のコンテナが存在しない場合は、ドッキングウィンドウは自動的にディレクトリが作成されます
- コンテンツディレクトリ内のコンテナが、ホスト・マシン上のディレクトリでない場合、コンテンツドッキングウィンドウは、コンテナのディレクトリカバーを使用します。
- ディレクトリ内のコンテナは、コンテンツがある場合かどうかを限り、コンテンツホストディレクトリのドッキングウィンドウがホスト上のディレクトリを使用するよう上書きします
ボリューム
私のボリュームは、コンテナ内に/ mydataというディレクトリをマウントします。
ドッキングウィンドウの実行がmy-ボリュームを-v -IT:/ mydataという高山SH
あなたは、ボリュームの私のボリュームを与えるために見ることができます。
ドッカー体積はmy-検査ボリューム [ { " CreatedAtを":" 2018-03-28T14:52:49Z " 、 " ドライバ":" ローカル" 、 " ラベル":ヌル、 " マウントポイント":」の/ var / libに/ドッカー/ボリューム/私のボリューム/ _data 「」名「:」私のボリューム「」オプション" :{}、 " 範囲":" ローカル" } ]
あなたは、ホストマシンのボリュームディレクトリ参照 の/ var / libに/ドッカー/ボリューム/マイ・ボリューム/ _dataを 。私のボリュームが存在しない場合は、この時点では、ドッキングウィンドウは自動的に私のボリュームを作成し、マウントします。
また、ホスト上のボリュームを指定することはできません。
ドッキングウィンドウの実行-it -v / mydataという高山SH
この時点で、ドッキングウィンドウボリュームが自動的にランダムな名前を作成し、中/ mydataというディレクトリコンテナにマウント。似たホストマシン上の匿名のボリュームのディレクトリパスVAR / libに/ドッカー/ボリューム/ 300c2264cd0acfe862507eedf156eb61c197720f69e7e9a053c87c2182b2e7d8 / _data。
私たちは、ドッキングウィンドウが自動的にボリュームを作成する手助けに加えて、我々は独自に作成することができます。
ドッキングウィンドウのボリューム作成私の-体積2
そして、このすでに私のボリューム-2は、コンテナに取り付けられました:
ドッキングウィンドウの実行-it -v私-体積2:/ mydataという高山SH
DockerfileのVOLUME
Dockerfileでは、我々はまた、ボリュームにマッピングされるディレクトリの必要性にcontaienrを宣言するVOLUMEコマンドを使用することができます。
#Dockerfile
VOLUME / fooの
各Dockerfileボリュームが新しいコンテナを実行すると、あなたが別のコンテナ間でデータを共有する必要がある場合は、自動的に、我々はまだ必要が、匿名のボリューム用に作成されます -it -v私のボリュームを実行しドッカー: / FOOの 仕方/ fooが私のボリュームに格納されたデータを指定しました。
理解していない場合ので、VOLUME / fooの、時には誤解を招くことは、問題が生じる可能性があります。