【发布时间】:2017-12-15 04:08:53
【问题描述】:
我正在使用官方的 postgresql docker 镜像来启动一个容器。
之后,我安装了一些软件并使用 psql 创建了一些表等。我首先启动 postgres 容器,如下所示:
docker run -it --name="pgtestcontainer" -e POSTGRES_PASSWORD=postgres -p 5432:5432 postgres:9.6.6
然后我用
附加到这个容器docker exec -it pgtestcontainer bash
然后我安装软件,创建数据库表等。
之后,我首先退出第二个终端会话(我用来安装软件)并在第一个终端会话中执行 ctrl + c 以停止 postgres 容器。
此时我的期望是,如果我提交这个 postgres 图像
docker commit xyz...zxy pg-commit-test
然后基于提交的镜像运行一个新容器:
docker run -it --name="modifiedcontainer" -e POSTGRES_PASSWORD=postgres -p 5432:5432 pg-commit-test
那么我应该准备好所有的软件和表格。
上述过程的结果是我安装的软件在修改后的容器中,但 sql 表等已经消失。所以我的猜测是我的方法或多或少是正确的,但是我缺少一些特定于 postgres docker 图像的东西。
我知道如果没有绑定外部目录或 docker 卷,它会从头开始创建数据库
/var/lib/postgresql/data
但我没有这样做,在提交之后,我希望数据库的内容保持原样。
我如何遵循上述(或正确的)过程并保留对数据库的更改?
【问题讨论】:
标签: postgresql docker