如何还原docker postgres容器?

时间:2018-11-27 09:43:52

标签: docker database-restore

我是docker的新手。不幸的是,我天真地做了一个改变-我从GUI设置了一个vew环境变量,它惊人地引起了容器的重新创建!所有的postgreSQL数据库都丢失了。 因此,有两个问题: 为什么会发生? 有没有办法回滚? (没有备份或其他内容。)

1 个答案:

答案 0 :(得分:0)

有相当多的更改集,需要删除和重新创建容器。如您所知,这包括更改环境变量。它还包括已发布的端口,主机映射的目录,以及更改容器下方的映像。反过来,如果有任何类型的安全更新,软件补丁发布或只是新的应用程序构建,则映像将发生更改。

简而言之:删除Docker容器非常普遍,您需要确保保留数据

执行此操作的标准方法是在容器中装入一些额外的存储。 Docker提供了一个named volume系统,但是命名的卷可能是不透明的并且难以管理。 bind mount主机目录通常更容易。 (注意:链接的文档主张使用命名的卷,使用易于使用的非Docker工具可以更容易地检查和管理IME主机目录。)您需要查看每个映像的文档以知道将存储连接到何处,但要了解标准postgres/var/lib/postgresql/data中的图片(请参见链接页面末尾的“数据存储位置”)。在普通的Docker中,您可以运行

docker run \
  -d \
  -p 5432:5432 \
  -v ./postgres:/var/lib/postgresql/data \
  postgres:11

但是您的GUI工具中可能有一个设置。

您以前的数据可能会丢失。 Docker不会保留容器的快照,删除容器实际上会删除容器及其基础数据。您仍然需要做一些事情,例如备份数据,以防Docker或系统其他部分发生故障。