postgreSQL 的官方 docker 图像如何以及在何处保存其数据库
How and Where does the official docker image of postgreSQL persist its database
我是 docker 的新手,有点困惑,因为我希望我的 PostgreSQL docker 容器无法保留任何数据,但是当我在停止它后将其重新旋转时,我的数据库数据似乎还在。
我一直在寻找现有的答案,并在堆栈交换中找到了以下内容:
(抱歉,我没有代表 post 超过 2 个链接)
- Docker postgres 持久性和容器生命周期
- 如何在 Docker Postgres
的脚本中创建 User/Database
- 如何在 docker
中处理持久性存储(例如数据库)
但是我还是不明白。也许有人可以为我把它拼写得更清楚一点!这就是我所做的:
(我使用的 docker compose 和 build 文件显示在这个 post 的底部)
我遵循了 Docker 文档站点中的教程:
Quickstart: Docker Compose and Django
一切都很完美,所以我继续学习 Django 应用程序教程:
Writing your first Django app
一切都很好,所以我在我的新网站上玩了一会儿,导致数据库中填充了一些数据。
我可以看到我的示例 Django 应用程序的网络应用程序代码是如何保留下来的,因为它安装在我主机上的一个卷上,并且还复制到我 运行 [=84= 时构建的图像中]-再次组合 ,但我预计 postgres 数据库容器中存储的任何数据在停止所有容器后都会丢失。 但是在停止我所有的 运行ning 之后containers 我回到我的 docker 项目目录和 运行:
docker-compose up
这一切都直接恢复了,我之前 运行 图像的数据仍然存在于数据库中,并在我的 Django 网络应用程序中使用。
这是怎么回事?
- 数据库存储它的数据在哪里?
- 主机上的某个地方?
- 我怎样才能找到它在哪里?
- postgres 容器如何管理跨不同的 运行s 持久化数据?
- 构建文件的哪一部分实现了这一点?
- 或者这是官方 postgres 图像的某种默认行为?
下面是我按照上述 docker 快速入门教程的指示使用的构建文件。
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>
我是 docker 的新手,有点困惑,因为我希望我的 PostgreSQL docker 容器无法保留任何数据,但是当我在停止它后将其重新旋转时,我的数据库数据似乎还在。
我一直在寻找现有的答案,并在堆栈交换中找到了以下内容:
(抱歉,我没有代表 post 超过 2 个链接)
- Docker postgres 持久性和容器生命周期
- 如何在 Docker Postgres 的脚本中创建 User/Database
- 如何在 docker 中处理持久性存储(例如数据库)
但是我还是不明白。也许有人可以为我把它拼写得更清楚一点!这就是我所做的:
(我使用的 docker compose 和 build 文件显示在这个 post 的底部)
我遵循了 Docker 文档站点中的教程:
Quickstart: Docker Compose and Django
一切都很完美,所以我继续学习 Django 应用程序教程:
Writing your first Django app
一切都很好,所以我在我的新网站上玩了一会儿,导致数据库中填充了一些数据。
我可以看到我的示例 Django 应用程序的网络应用程序代码是如何保留下来的,因为它安装在我主机上的一个卷上,并且还复制到我 运行 [=84= 时构建的图像中]-再次组合 ,但我预计 postgres 数据库容器中存储的任何数据在停止所有容器后都会丢失。 但是在停止我所有的 运行ning 之后containers 我回到我的 docker 项目目录和 运行:
docker-compose up
这一切都直接恢复了,我之前 运行 图像的数据仍然存在于数据库中,并在我的 Django 网络应用程序中使用。
这是怎么回事?
- 数据库存储它的数据在哪里?
- 主机上的某个地方?
- 我怎样才能找到它在哪里?
- postgres 容器如何管理跨不同的 运行s 持久化数据?
- 构建文件的哪一部分实现了这一点?
- 或者这是官方 postgres 图像的某种默认行为?
下面是我按照上述 docker 快速入门教程的指示使用的构建文件。
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>