【发布时间】:2015-03-23 03:20:43
【问题描述】:
我有一个正在运行 postgresql db 的 docker 容器,但它被我的Apache Mesos Marathon 意外删除了。
有什么方法可以恢复容器或至少获取数据库文件?
谢谢
【问题讨论】:
标签: linux docker mesos marathon
我有一个正在运行 postgresql db 的 docker 容器,但它被我的Apache Mesos Marathon 意外删除了。
有什么方法可以恢复容器或至少获取数据库文件?
谢谢
【问题讨论】:
标签: linux docker mesos marathon
如果它只是停止而不是删除,您应该能够在docker ps -a 下找到它并运行docker start CONTAINER。
除非使用docker rm -v CONTAINER 删除数据库,否则数据库文件可能仍在/var/lib/docker/vfs/dir/ 下的某个目录中,但您可能很难确定是哪一个。如果您确实设法找出正确的目录,您应该能够通过将目录挂载到新的数据库实例来恢复数据库。
【讨论】:
接受的答案是正确的,但是我想添加具体步骤以通过其 docker 卷恢复应用程序(在我的情况下是 PostgreSQL 数据库)。
我使用的是 Docker 版本 18.09.0,在 CentOS 中构建 4d60db4。
/var/lib/docker/volumes/。_data 文件夹,其中包含该容器的应用程序文件。找到您要恢复的特定卷并将其容器 ID 保存在某处,以便在接下来的步骤中记住它。docker volume ls 以确保容器ID 被列为卷。这将是我们要恢复的volume_name。docker run -d --name postgres -p 5432:5432 postgres 运行一个虚拟容器。docker inspect postgres
Mounts 部分并检查Destination。就我而言,它是/lib/postgresql/data。docker run -d --name postgres -p 5432:5432 --mount source=volume_name,target=/var/lib/postgresql/data postgres
【讨论】: