持久化Docker容器数据库

时间:2018-07-03 13:25:28

标签: database postgresql docker docker-compose

我在项目中使用了postgres docker镜像。对于初始化,我使用以下命令来创建和初始化数据库(表,视图,数据等)

COPY sql_dump.sql /docker-entrypoint-initdb.d/

在停止和删除容器之后是否可以保留这些数据?例如,当我运行postgres的图像时,它将在每次容器启动时使用这些数据创建数据库,而不会加载脚本。只需加载首次运行时创建的数据即可。

我做了一些研究,发现了VOLUME命令,但是我不知道如何使用它来实现我的目的,我是Docker的新手。谢谢你的帮助。我正在使用Docker For Win v18。

1 个答案:

答案 0 :(得分:1)

您可以使用docker命名卷,更多信息请参见here

这将创建一个名为postgres-data的命名卷

docker volume create postgres-data 

说这是您创建容器的命令。

docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres

将其更改为此。

docker run --name some-postgres  -v postgres-data:/var/lib/postgresql -e POSTGRES_PASSWORD=mysecretpassword -d postgres

这应该将postgres-data卷挂载在/ var / lib / postgresql下。他们可以初始化您的数据库吗?当您停止并启动容器时,它将包含持久数据。

-HTH