1. ホーム
  2. docker

[解決済み] Docker Desktopでデータボリュームを探す(Windows)

2022-04-23 16:35:25

質問

現在Dockerを勉強しているのですが、データボリュームが実際にどこに存在するのかわからなくなってきています。

私が使っているのは Windows版Docker Desktop . (ウィンドウズ10)

ドキュメントには、オブジェクトに対して docker inspect を実行するとソースが得られると書かれています。 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"
    }
]

どなたか教えてください。私のデータボリュームが実際に存在する場所を知りたいのですが、それは私のホストマシン上にあるのでしょうか?もしそうなら、どのように私はそれへのパスを取得することができますか?

解決方法は?

あなたのボリュームディレクトリは /var/lib/docker/volumes/blog_postgres-data/_data であり、かつ /var/lib/docker に搭載されるのが一般的です。 C:\Users\Public\Documents\Hyper-V\Virtual hard disks . いずれにしても、Dockerの設定を見れば確認できます。

を参照することができます。 これらのドキュメント は、Windows上のDockerでドライブを共有する方法についての情報です。

ちなみに。 Source はホスト上の場所であり Destination は、以下の出力のコンテナ内の位置である。

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


コメント中の質問に答えるために更新しました。

<ブロッククオート

私がここで一番気になるのは、画像などを共有するのはいいのですが、自分のデータをどのように共有すればいいのか、ということです。

実は volume は、この目的(Dockerコンテナ内のデータ管理)のために設計されています。ボリューム内のデータはホストFS上に永続化され、Dockerコンテナ/イメージのライフサイクルから隔離されます。ボリューム内のデータは、以下の方法で共有できます。

  • Dockerボリュームをホストにマウントして再利用する

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

    そうすると、すべてのデータは /path/on/host バックアップをとって、別のマシンにコピーし、同じボリュームでコンテナを再実行することができます。

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

    データコンテナを作成します。 docker create -v /dbdata --name dbstore training/postgres /bin/true

    を使って、このコンテナをベースに他のコンテナを実行します。 --volumes-from : docker run -d --volumes-from dbstore --name db1 training/postgres によって生成されたすべてのデータは db1 はコンテナのボリュームに永続化されます。 dbstore .

より詳しい情報は Docker ボリューム公式ドキュメント .

簡単に言うと volumes は、コンテナのデータをすべて含むホスト上のディレクトリに過ぎないので、データをバックアップ/共有するために以前使用した任意の方法を使用することができます。

<ブロッククオート

イメージと同じように、docker-hubにボリュームをプッシュできますか?

いいえ、Docker イメージ はDockerハブ(別名「レジストリ」)にプッシュできるものですが、データはそうではありません。データのバックアップ、永続化、共有はどんな方法でも可能ですが、データをDockerレジストリにプッシュして共有することは、何の意味もありません。

<ブロッククオート

バックアップなどを取ることはできますか?

はい、上記の通りです :-)