DockerComposeのドッキング によると 、次のようなものを書くとき:
volumes:
- /var/lib/postgresql/data
新しいDockerボリュームを作成し、それを/var/lib/postgresql/data
にマップします。 したがって、docker-compose up
を実行するたびに およびdocker-compose down
、新しいボリュームを作成します。 docker volume ls
で動作を確認できます 。
これを回避するには、次の2つのオプションがあります。
(A)ホストディレクトリをコンテナにマップします
<HOST_PATH>:<CONTAINER_PATH>
を使用して、ホストのディレクトリをコンテナにマップできます。 。
volumes:
- /path/to/your/host/directory:/var/lib/postgresql/data
postgresqlのデータは/path/to/your/host/directory
に保存されます コンテナホストの。
(B)外部コンテナを使用する
docker-composeには、外部コンテナー のオプションがあります。 。trueに設定すると、必ずしもボリュームが作成されるとは限りません。例を次に示します。
version: '2'
services:
dbdata:
image: postgres:9.5.2
volumes:
- mypostgresdb:/var/lib/postgresql/data
volumes:
mypostgresdb:
external: true
external: true
を使用 、docker-composeはmypostgredb
を作成しません ボリュームなので、次のコマンドを使用して独自に作成する必要があります:
docker volume create --name=mypostgredb
postgresqlのデータは、mypostgredb
という名前のDockerボリュームに保存されます。 。 リファレンス
を読む 詳細については。