如何在不删除现有数据的情况下升级Docker Postgresql?

我是docker和postgresql的初学者。

如何将docker postgresql 9.5升级到9.6而不会丢失我当前的数据库? fyi:即时通讯使用Ubuntu 14和Docker 17.09

提前致谢。

为了在Docker容器中保存数据,需要一个卷。 这个卷将直接挂载到容器的文件系统上,并在容器被杀时被保存。 这听起来虽然容器创build没有卷附加。 获取该数据的最佳方法是使用复制容器的数据文件夹并移动到主机文件系统。 然后用新图像创build一个docker容器。 将数据目录复制到正在运行的容器的数据目录中,例如pgdata:/ var / lib / postgresql / data

docker cp [containerID]:/var/lib/postgresql/data /home/user/data/data-dir/ docker stop [containerID] docker run -it --rm -v pgdata:/var/lib/postgresql/data postgres docker cp /home/user/data/data-dir [containereID]:/var/lib/postgresql/data 

如果不起作用,我只是转储当前的数据库,并重新上传到新的容器

您不会将数据库文件存储到外部存储(容器外部)。 然后我知道只有一种方式来存储你的数据库:

1)备份数据库
2)closurespostgres 9.5容器
3)运行新的postgres 9.6容器
4)恢复备份

您可以使用pg_dumpall来备份完整数据库:

 pg_dumpall > backupfile 

生成的转储可以使用psql进行恢复:

 psql -f backup postgres