3

https://docs.docker.com/engine/userguide/containers/dockervolumes/でボリュームに関する Docker のユーザー ガイド セクションを読んでいます。

最初の部分で、コンテナにボリュームを作成して追加する方法を示します。これを「方法 1」と呼びます。

-v を複数回使用して、複数のデータ ボリュームをマウントできます。ここで、Web アプリケーション コンテナーに単一のボリュームをマウントします。

$ docker run -d -P --name web -v /webapp training/webapp python app.py

これにより、/webapp のコンテナー内に新しいボリュームが作成されます。

後でデータ ボリューム コンテナーについて説明します。これを「方法 2」と呼びます。

コンテナー間で共有したい永続データがある場合、または非永続コンテナーから使用したい場合は、名前付きのデータ ボリューム コンテナーを作成し、そこからデータをマウントすることをお勧めします。

$ docker create -v /dbdata --name dbstore training/postgres /bin/true

-vここで私が得られないのは、単にコマンドを使用してボリュームを実装するdocker runこと (方法 1) と、「データ ボリューム コンテナー」を使用してボリュームを実装すること (方法 2)の違いは何ですか?

イメージの非永続的なコンテナーの寿命を通じて永続的なボリュームを作成しているだけのように見えますが、間違っている場合は修正してください。

4

1 に答える 1

1

私の理解では、少なくとも docker 1.12 以降では、ボリュームは常に同じものです。つまり、ホストのどこかに保存されている永続的なデータです。ただし、ボリュームを管理するにはさまざまな方法があります。

  1. それを作成してコンテナーにマウントします (方法 1)。これにより、あるコンテナのボリュームを別のコンテナにマウントする場合に「volumes-from」を使用できます
  2. を使用してボリュームを作成し、docker volume createdocker に管理させます。ホストシステムのどこかに保存されますが (例: /var/lib/docker)、どこにどのように正確に保存されるかはあまり気にしません。
  3. ホストディレクトリをボリュームとしてマウントします。この場合、ホストのどこにマウントされているかを知っており、それに対する「責任」があります。

次に、「トリック」があります(ここで説明されているように。たとえば:

「docker run -v my-precious-data:/data imageName でイメージから新しいコンテナーを実行して名前付きボリュームを作成すると、/data の下のコンテナー内のデータが名前付きボリュームにコピーされます。」

そのため、ボリュームを作成/管理する方法は少し異なる場合がありますが、基本的には常にボリュームです。

于 2016-09-06T16:25:45.723 に答える