web-dev-qa-db-ja.com

docker-composeのためにdockerボリュームはホストコンピューターのどこに保存されますか?

次のdocker-composeファイルを検討してください

version: "2"
services:
  postgres:
    image: postgres:9.6
    volumes:
      - ./vol_folder:/var/lib/postgresql
    ports:
      - "5432:5432"

これが私のmacのコマンド履歴です

docker-compose up

psql -h 192.168.99.100 -p 5432 -U postgres

create table test (my_id bigserial primary key);
INSERT INTO test (my_id) values (1);
SELECT * FROM test;

\q

元々、上記のコマンドを実行すると、ホストコンピュータの.sql./vol_folderファイルが作成されると思いました。しかし、.sqlには空のdataディレクトリがあり、./vol_folderには./vol_folderファイルがありません。

さらに、docker-compose downおよびdocker-compose upを再度実行すると、データベース内のデータがなくなっていることがわかります。

イメージの実行中にデータを作成したとき、データが./vol_folderに戻されないため、再起動してもホストからマウントするものがないのではないかと思いました。

だから私の質問は私のボリュームがホストコンピュータのどこに保存されているのでしょうか? Dockerボリュームは一方向だけですか(例:ホストデータからコンテナー)、双方向ではありませんか?

6
kevP

ボリュームは通常、/var/lib/docker/volumes/のどこかに保存されます

詳細を確認するには、次のコマンドを試してください

docker volume ls
docker volume inspect <volume identifier>

参照: https://www.linux.com/learn/docker-volumes-and-networks-compose

5
amarillion