我是docker的新手并且有些困惑,因为我期待我的PostgreSQL docker容器无法保留任何数据,但是当我停止它后将其重新启动时,我的数据库数据似乎仍然存在。
我一直在寻找现有的答案,并在堆栈交换中找到以下内容:
(对不起,我没有代表发布超过2个链接)
但我仍然不明白。也许有人可以为我更明显地拼出来!这就是我所做的:
(我使用的docker撰写和构建文件显示在本文的底部)
我按照Docker文档站点的教程进行了操作:
Quickstart: Docker Compose and Django
这一切都完美无缺,所以我继续关注Django app教程:
Writing your first Django app
一切都很好,所以我在我的新网站上玩了一会儿,导致数据库填充了一些数据。
我可以看到我的示例Django应用程序的Web应用程序代码如何粘贴在我的主机上的卷上,并且还复制到我再次运行docker-compose时生成的图像但我预期停止所有容器后,存储在postgres数据库容器中的任何数据都将丢失。但是在停止所有正在运行的容器后,我又回到了docker项目目录并运行:
docker-compose up
这一切都直接回来了,我之前运行的图像中的数据仍然存在于数据库中,并在我的Django Web应用程序中使用。
那是怎么回事?
以下是我按照上面引用的docker快速入门教程的指示使用的构建文件。
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
搬运工-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
答案 0 :(得分:1)
它存储在docker容器中。当您停止时,容器仍会保留其所有数据。只有在删除数据时才会丢失数据:
docker rm <container>