次の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ボリュームは一方向だけですか(例:ホストデータからコンテナー)、双方向ではありませんか?
ボリュームは通常、/var/lib/docker/volumes/
のどこかに保存されます
詳細を確認するには、次のコマンドを試してください
docker volume ls
docker volume inspect <volume identifier>
参照: https://www.linux.com/learn/docker-volumes-and-networks-compose