web-dev-qa-db-ja.com

dockerホストボリュームをマウントしますが、コンテナーの内容で上書きします

いくつかの記事は、Dockerのボリュームとデータ管理の理解に非常に役立ちました。これらの2つは特に優れています。

しかし、私が探しているものが議論されているかどうかはわかりません。これが私の理解です:

  1. docker run -v /Host/something:/container/somethingを実行すると、ホストファイルは指定された場所にあるコンテナファイルをオーバーレイします(上書きはしません)。コンテナーは場所の以前のファイルにアクセスできなくなり、代わりにその場所にあるホストファイルにのみアクセスできます。
  2. Dockerfileでボリュームを定義すると、他のコンテナーがイメージ/コンテナーによって作成されたコンテンツを共有する場合があります。
  3. ホストはDockerfileボリュームを表示/変更することもできますが、docker inspectを使用して真のマウントポイントを検出した後でのみです。 (通常、/var/lib/docker/vfs/dir/cde167197ccc3e138a14f1a4f7c....のような場所)。ただし、DockerをVirtualbox VM内で実行する必要がある場合、これは厄介です。

私の質問は簡単です。ボリュームをマウントするときに、コンテナーファイルがホストファイルよりも優先されるように、オーバーレイを反転するにはどうすればよいですか?

コンテナーファイルシステムに簡単にアクセスできるマウントポイントを指定したいと思います。しかし、この質問をしている人はいないようです。このためにデータコンテナーを使用できること、またはdocker inspectを使用してマウントポイントを見つけることができることを理解していますが、この場合どちらのソリューションも適切なソリューションではありません。

16
Jack Palkens

ファイルを共有するdocker 1.10+の方法は docker volume create
つまり、データボリューム専用のコンテナは必要ありません。データボリュームを直接使用できます。

こうすることで、そのボリュームをコンテナに共有してマウントし、そのボリュームにコンテンツを保持することができます。
これは、コンテナがどのように機能しているかとより一致しています:ホストからメモリ、CPU、およびファイルシステムを分離する:これが、 「ボリュームをマウントし、コンテナのファイルをホストファイルよりも優先させる」:これは、そのコンテナの分離を破壊し、ホストにコンテンツを公開します。

9
VonC