2017-04-03 4 views
6

私は現時点でドッカーを学びたいと思っています。データボリュームが実際にどこに存在するのか混乱しています。Dockerでデータボリュームを見つける

私はWindows用のDockerを使用しています。彼らはドッキングウィンドウは、オブジェクト上で検査実行すると、あなたのソースを与えると言うのドキュメントにする(Windows 10)

https://docs.docker.com/engine/tutorials/dockervolumes/#locating-a-volume

$ docker inspect web 

"Mounts": [ 
    { 
     "Name": "fac362...80535", 
     "Source": "/var/lib/docker/volumes/fac362...80535/_data", 
     "Destination": "/webapp", 
     "Driver": "local", 
     "Mode": "", 
     "RW": true, 
     "Propagation": "" 
    } 
] 

私はこれを見ていないが、私は以下の取得:

$ docker inspect blog_postgres-data 
[ 
    { 
     "Driver": "local", 
     "Labels": null, 
     "Mountpoint": "/var/lib/docker/volumes/blog_postgres-data/_data", 
     "Name": "blog_postgres-data", 
     "Options": {}, 
     "Scope": "local" 
    } 
] 

誰でも助けてくれますか?私は自分のデータボリュームが実際にどこに存在するのかをホストマシン上で知りたいだけですか?もしそうなら、どのように私はそれへの道を得ることができますか?

ありがとう

答えて

8

あなたのボリュームディレクトリは/var/lib/docker/volumes/blog_postgres-data/_dataで、/var/lib/dockerは通常C:\Users\Public\Documents\Hyper-V\Virtual hard disksにマウントされています。とにかくドッカー設定で確認できます。

windows上のドッカーとドライブを共有する方法については、this docsを参照してください。

ところで、Sourceはホスト上の位置であり、Destinationは、以下の出力で容器内の場所である:

"Mounts": [ 
{ 
    "Name": "fac362...80535", 
    "Source": "/var/lib/docker/volumes/fac362...80535/_data", 
    "Destination": "/webapp", 
    "Driver": "local", 
    "Mode": "", 
    "RW": true, 
    "Propagation": "" 
} 
] 

================== ========================================== =======

コメントでの質問に答えるために更新

:ここ

私の主な好奇心は、画像などを共有することは偉大であるということですが、どのように私は私のデータを共有していますか?

実際volumeは(ドッカー容器内のデータを管理する)は、この目的のために設計され、ボリューム内のデータをホストFSに持続し、ドッカー容器/画像のライフ円で単離されます。 、そして、すべてのデータが/path/on/hostに永続化されます、あなたはバックアップそれをできた

docker run -v /path/on/host:/path/inside/container image

  • それをホストし、再利用するマウントドッキングウィンドウのボリューム

    にコピー:あなたは、ボリュームを使用してデータを共有することができます他のマシンと同じボリュームでコンテナを再実行してください。

  • データコンテナを作成してマウントします。

    データコンテナを作成します。docker create -v /dbdata --name dbstore training/postgres /bin/true 実行その他の容器を--volumes-fromを使用して、このコンテナに基づく:docker run -d --volumes-from dbstore --name db1 training/postgresを、その後、db1意志によって生成されたすべてのデータがコンテナdbstoreのボリュームに永続化。あなたはofficial docs of docker volumesを参照することができます詳細については

、単純に言えば、volumesは、すべてのコンテナデータを使用してホスト上の単なるディレクトリなので、バックアップに/あなたのデータを共有する前に、使用されるすべてのメソッドを使用することができます。

イメージと同じようにドッキングハブにボリュームをプッシュできますか?

いいえ、ドッカー画像は配信するものですが、データはありません。あなたは好きな方法でデータをバックアップ/永続化/共有することができますが、ドッカーのレジストリにデータをプッシュして共有することは意味がありません。

バックアップなどはできますか?

はい、

+0

これで、ソース '/ var/lib/docker/volumes/blog_postgres-data/_data'はlinux VMドッカーが実行されているためです。私の主な好奇心は画像の共有などが大好きですが、データをどのように共有するのですか?イメージと同じようにドッキングハブにボリュームをプッシュできますか?バックアップなどはできますか? – Brad

+0

@ブラッド、コメントは十分ではないので、私はあなたの質問のために私の答えを更新しました:それはあなたに役立つことを願って:-) – shizhz

0

各コンテナには、ホストファイルシステムとは独立した独自のファイルシステムがあります。 -vフラグを付けてコンテナを実行すると、ホストとコンテナが同じデータを参照できるようにボリュームをマウントできます(docker run -v hostFolder:containerFolderのように)。

"/var/lib/docker/volumes/fac362...80535/_data"(ホスト)が "/ webapp"(コンテナ)にマウントされているマウントされたボリューム(マウント) 。

私は、あなたが "/ var/lib/docker/volumes/blog_postgres-data/_data"にあるコンテナファイルシステムでのみアクセス可能であるため、-vを使用しなかったと仮定します。このデータは、コンテナ(docker -rm)を削除すると削除されるので、フォルダをマウントすることをお勧めします。

Windowsからこのデータにアクセスできる質問については、私の知る限り、Windows用のdockerはWindows 10のbashサブシステムを使用しています。Windows 10用のbashを実行し、そのフォルダに移動するか、Windows 10からlinuxフォルダにアクセスする方法を調べます。page WindowsのLinuxサブシステム10。

更新:docker cpを使用して、ホストとコンテナ間のファイルをコピーすることもできます。

+0

:-)上に掲載したように ' "/var/lib/docker/volumes/fac362...80535/_data"(容器)は' "/ Webアプリケーション"(ホスト)に取り付けられています、私はあなたが注文を間違っていると思います、前者はホスト上の場所であり、後はコンテナ内の場所です。 – shizhz

+0

あなたは正しいです。私はそれを訂正した。 – herm

関連する問題