恢复已删除的容器Docker

eug*_*ene 4 linux marathon docker mesos

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

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

谢谢

Adr*_*uat 7

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

除非使用删除数据库,否则docker rm -v CONTAINER数据库文件可能仍位于下方的某个目录中/var/lib/docker/vfs/dir/,但是您可能很难确定哪个文件。如果确实设法找出正确的目录,则只需将目录挂载到新的数据库实例中,就应该能够还原数据库。

  • 您能告诉我们如何还原它吗?谢谢。 (14认同)

Mur*_*nat 5

接受的答案是正确的,但是我想添加通过其 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. 此时,一个包含旧数据的容器将可用。