2017-06-12 3 views
1

Dockerのドキュメントを読んで、Docker Data Volumesをよく理解しようとしています。Dockerのデータボリュームとホストへのマウント

それはあなたがドッカーボリュームをマウントするには2つの方法があることをを理解し、私の次のとおりです。

  • シンプルマウント(例えばdocker run -it -v /data --name container1 busyboxが)。そして
  • マウントは、(例えばdocker run -it --name container1 -v /path/on/host:/datavol busybox

しかし、ボリュームは、コンテナの再起動しても持続するかさえコンテナスワップアウト(旧コンテナが、削除され新しいものが作成された/開始)するためにはいないだろうホストします両方の方法でボリュームをホストマシンにマウントする必要がありますか?つまり、「シンプルマウント」方法でホストに明示的にマウントしていない場合、実際にマウントされているボリュームはどこですか?そして、この場所はコンテナスワップアウトからどのように生き残っていますか?

また、ボリュームは特定のホストにのみローカルであると仮定します。また、複数のホストで稼働しているSwarmまたはクラスタを使用している場合、これらのコマンドを使用する方法はありません。はい、これらのボリュームにアクセスできますか? (そして、これはデータボリュームコンテナが再生される場所であると思います)事前に感謝します!

答えて

1

どちらの方法でも、ボリュームをホストマシンにマウントする必要はありませんか?

はい、いずれのアプローチも、コンテナのライフサイクルを通じて維持されるホストディレクトリに基づいています。

の詳細情報を取得するために、次のコマンドを使用します

docker volume ls 
docker volume inspect <volume-id> 
# and 
docker inspect <container-id> 

(アプローチは、1)ボリュームが実際にマウントされているの?

この操作を行います。あなたがOSXやWindowsにある場合、そのソースが内部のローカルディレクトリを指していること

"Mounts": [ 
      { 
       "Type": "volume", 
       "Name": "96f5e6531480cc716cd030f3f60f8927a55728a52d55ad55589752c2b89f2001", 
       "Source": "/var/lib/docker/volumes/96f5e6531480cc716cd030f3f60f8927a55728a52d55ad55589752c2b89f2001/_data", 
       "Destination": "/data", 
       "Driver": "local", 
       "Mode": "", 
       "RW": true, 
       "Propagation": "" 
      } 
     ], 

注:あなたの答えは、 "ソース" である

docker inspect <container-id> 

をドッカーを実行するVM

また、この場所はコンテナの交換にどのように影響しますか?

は、彼らは、ホストのローカルディレクトリに基づいているため(そして、彼らはボリュームあり、その理由のためにそれらが存在する)生き残ります。

複数のホストで稼動しているSwarmやクラスタを使用している場合は、これらのコマンドを使用して異なるホスト上で動作するコンテナがこれらのボリュームにアクセスできるようにする方法はありません。

単純なボリューム構成に関しては正しいです。これは、ドッカーが厄介な、永続性になるところです。共有ファイルシステムレベルで共有ディレクトリを実装し、ボリュームとしてコンテナにマウントして、クラスタのホスト間で共有ボリュームを取得できます。

https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-shared-storage-volume-as-a-data-volume

関連する問題