2017-10-10 12 views
0

ドッカーの文脈では、私は画像のどのレイヤーが何であり、一番上の書き込み可能なレイヤーが何であるかを理解しています。 -v引数を付けずにドッカーコンテナを実行すると、ボリュームが作成されますか?ボリュームを指定すると(ホスト内のある場所にマウントされていない)、ボリュームはこのコンテナの書き込み可能なレイヤーになりますか?Dockerのコンテナレイヤーとボリュームの違いは何ですか?

答えて

1

ボリュームとイメージのレイヤーは、Dockerの別の概念です。あなたの最初の質問では、であり、-vが使われていないボリュームは作成されません(DockerfileのフォーマットにはVOLUME動詞が含まれているという事実を無視してください)。

ボリュームドライバ(デフォルトでは、コンテナファイルシステムのターゲット場所にバインドマウントされるローカルディレクトリ)によって提供されるボリュームを指定すると、このボリュームはイメージレイヤーとは無関係です。 Dockerエンジンで使用されているバックエンドストレージドライバによって提供される「書き込み可能な」最上位レイヤーです。

具体的には、使用しているストレージドライバは、レイヤースタックと最上位の「r/w」レイヤーの管理方法を制御します。たとえば、オーバーレイまたはdevicemapperまたはbtrfsドライバは、イメージレイヤのマウントと最上位レイヤの作成と管理を処理します。

ボリュームは、ファイルシステムイメージ内の既存の(または作成された)パスにバインドされてマウントされることで、これ以外でも再生されます。コンテナを終了すると、これらのボリュームは元の場所(例えば、ローカル/デフォルトボリュームドライバの場合は/var/lib/docker/volumes/<name>)に保存され、アンマウントされたレイヤースタックは使用中のストレージドライバの管理下で、出口(--rm)でコンテナを取り外していない限り、レイヤースタックのこれらは別々に管理される2つの概念であり、ボリュームシステムにはストレージバックエンドドライバとの相互作用はありません。

+0

ありがとうございました。多くの助け –

0

-v引数を付けずにドッカーコンテナを実行すると、ボリュームが作成されますか? [container_path]、ここで

host_path

-vだけ

-v [host_path]にとからデータををマウントし、ボリュームを作成するためではありません、データを入力するサーバのディレクトリパス

con tainer_path、コンテナのディレクトリパスは、私が(ホストにいくつかの場所にマウントできません)のボリュームを指定した場合、ボリュームはこのコンテナの書き込み可能な層になるん

から日付をマウントしますか?

ホストにパスが存在しない場合。しかし、あなたはそれをコンテナにマウントしました。ここには2つのケースがあります。

CASE 1:あなたが実行している間、コンテナは、そのファイルを想定している場合、コンテナにあなたのマシンから、いくつかの設定ファイルをマウントしたい場合、それは、ログ

CASE 2でエラーがスロー:あなたがしたい場合はコンテナからホストマシンにボリュームをマウントします。cotainerが起動すると、ホストマシンにフォルダが作成され、ホストマシンのマウントされたディレクトリにデータが書き込まれます。

関連する問題