我如何将数据持久保存在docker / postgres容器中?

时间:2019-01-21 15:42:53

标签: postgresql docker

我知道可能有很多方法可以做到这一点。我正在寻找的是一种(最好)仅使用我的DockerFile和一个容器执行此操作的方法。

这是我当前的dockerfile:

{...
{"ignore_malformed": true}
...}

这是我用来构建此容器的命令:

FROM postgres:latest
ENV POSTGRES_USER=myuser
ENV POSTGRES_PASSWORD=mypassword

这是我用来运行容器的命令:

docker built -t my_db .

我想做的是尽可能将数据存储在容器中,但是我似乎不了解postgres如何或在哪里存储数据。我在另一个堆栈溢出帖子上看到,postgres默认会将其存储在/ var / lib / postgresql / data中,但是当我查看该文件夹时,什么也看不到。但是,我可以验证postgres是否正在运行,因为我正在使用一个名为teamSQL的客户端,并且可以从该客户端创建表并插入/读取数据。

我还可以验证当我停止容器并重新启动数据时,该数据绝对不会保留。

注意:这是在OSx中运行的,但我认为这不相关。

1 个答案:

答案 0 :(得分:0)

您应该使用Docker卷,因此,当您停止容器时,数据将保留在主机上,而当您再次启动容器时,数据将被安装到其上

docker volume create pgdata
docker run -p 5432:5432 -v pgdata:/var/lib/postgresql/data my_db