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ボリュームに保存されます。 。 リファレンス
を読む 詳細については。