postgreSQL的官方docker映像如何以及在何处保存其数据库

postgreSQL的官方docker映像如何以及在何处保存其数据库,postgresql,docker,persistence,docker-compose,Postgresql,Docker,Persistence,Docker Compose,我是docker的新手,有点困惑,因为我希望我的PostgreSQL docker容器不能持久化任何数据,但当我停止后将其旋转回来时,我的数据库数据似乎仍然存在 我一直在查找现有答案,并在stack exchange上找到以下答案: (对不起,我没有代表发布超过2个链接) Docker postgres持久性和容器寿命 如何在Docker Postgres脚本中创建用户/数据库 如何在docker中处理持久性存储(如数据库) 但我还是不明白。也许有人能给我解释清楚一点!这就是我所做的: (我

我是docker的新手,有点困惑,因为我希望我的PostgreSQL docker容器不能持久化任何数据,但当我停止后将其旋转回来时,我的数据库数据似乎仍然存在

我一直在查找现有答案,并在stack exchange上找到以下答案:
(对不起,我没有代表发布超过2个链接)

  • Docker postgres持久性和容器寿命
  • 如何在Docker Postgres脚本中创建用户/数据库
  • 如何在docker中处理持久性存储(如数据库)
但我还是不明白。也许有人能给我解释清楚一点!这就是我所做的:

(我使用的docker撰写和构建文件显示在本文底部)
我遵循了Docker文档网站上的教程:

这一切都很完美,所以我继续学习Django应用程序教程:

同样,一切都很好,所以我在我的新网站上玩了一会儿,导致数据库中填充了一些数据

我可以看到我的示例Django应用程序的web应用程序代码是如何运行的,因为它安装在我主机上的一个卷上,并且还复制到我再次运行docker compose时生成的映像中,但我希望在停止所有容器后,postgres数据库容器中存储的任何数据都会丢失。但是,在停止所有正在运行的容器后,我返回docker项目目录并运行:

docker-compose up
所有这些都直接备份了,我上一次运行的图像数据仍然存在于数据库中,并在Django web应用程序中使用

发生了什么事

  • 数据库在哪里存储数据?
    • 主机上的某个地方
    • 我怎样才能知道那在哪里
  • postgres容器如何在不同的运行中保存数据?
    • 构建文件的哪一部分实现了这一点
    • 或者这是官方博士后形象的默认行为

  • 下面是我按照上面提到的docker quickstart教程的指导使用的构建文件

    Dockerfile

    FROM python:2.7
    ENV PYTHONUNBUFFERED 1
    RUN mkdir /code
    WORKDIR /code
    ADD requirements.txt /code/
    RUN pip install -r requirements.txt
    ADD . /code/
    

    requirements.txt

    Django
    psycopg2
    

    docker-compose.yml

    version: '2'
    services:
      db:
        image: postgres
      web:
        build: .
        command: python manage.py runserver 0.0.0.0:8000
        volumes:
          - .:/code
        ports:
          - "8000:8000"
        depends_on:
          - db
    

    它存储在docker容器中。当您停止容器时,容器仍然保留其所有数据。只有在删除数据时,您才会丢失数据:

    docker rm <container>
    
    docker-rm