我是Docker的新手,有些困惑,因为我期望PostgreSQL Docker容器不能持久存储任何数据,但是当我停止它后将其旋转回去时,我的数据库数据似乎仍然存在。
我一直在寻找现有的答案,并在堆栈交换中找到了以下内容:
(对不起,我的代表没有发布两个以上的链接)
但是我还是不明白。也许有人可以对我说清楚一点!这是我所做的:
(我使用的docker compose和build文件显示在这篇文章的底部)
我遵循了Docker文档站点上的教程:
Quickstart: Docker Compose and Django
一切都运行良好,因此我继续遵循Django应用程序教程:
Writing your first Django app
一切都很好,所以我在新网站上玩了一会儿,导致数据库中填充了一些数据。
我可以看到示例Django应用程序的网络应用程序代码是如何粘贴的,因为它已安装在主机上的某个卷上,并且还复制到了我再次运行docker-compose 时生成的镜像中,但是我希望存储在停止所有容器后,postgres数据库容器将丢失。 但是,在停止所有正在运行的容器之后,我回到了docker项目目录并运行:
docker-compose up
一切都直接恢复了,而我之前运行的图像中的数据仍然保留在数据库中,并在我的Django Web应用程序中使用。
发生什么了?
以下是我根据上面引用的docker quickstart教程的指示使用的构建文件。
Docker文件
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>
关于postgresql - PostgreSQL的官方Docker镜像如何以及在何处保留其数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37990067/