恢复已删除的容器泊坞窗

时间:2015-03-23 03:20:44

标签: linux docker mesos marathon

我有一个运行postgresql db的docker容器,但我的Apache Mesos Marathon意外删除了它。

我有什么办法可以恢复容器,或者至少可以获取数据库文件吗?

由于

2 个答案:

答案 0 :(得分:6)

如果它刚刚停止,而不是删除,您应该可以在docker ps -a下找到它并运行docker start CONTAINER

除非使用docker rm -v CONTAINER删除数据库,否则数据库文件可能仍在/var/lib/docker/vfs/dir/下的某个目录中,但您可能很难确定哪一个。如果您确实设法找出正确的目录,您应该能够通过将目录挂载到新的数据库实例来恢复数据库。

答案 1 :(得分:1)

接受的答案是正确的,但是我想添加一些具体步骤,以通过其docker卷还原应用程序(在我的情况下是PostgreSQL数据库)。

我正在使用Docker版本18.09.0,在CentOS中构建4d60db4。

  1. 转到/var/lib/docker/volumes/
  2. 在此文件夹中,有一些名为容器ID的文件夹。每个容器ID文件夹都有一个_data文件夹,其中包含该容器的应用程序文件。找到您要还原的特定卷,并将其容器ID保存在某个地方,以备下一步使用。
  3. 运行命令docker volume ls以确保将容器ID列为卷。那将是我们要还原的volume_name
  4. 如果您不记得默认的安装目标,请通过命令docker run -d --name postgres -p 5432:5432 postgres运行一个虚拟容器。
  5. 运行命令docker inspect postgres
  6. 找到Mounts部分,然后检查Destination。在我的情况下是/lib/postgresql/data
  7. 停止并删除刚启动的虚拟容器。
  8. 运行命令docker run -d --name postgres -p 5432:5432 --mount source=volume_name,target=/var/lib/postgresql/data postgres
  9. 这时将有一个包含旧数据的容器。