我有一个运行postgresql数据库的docker容器,但它被
Apache Mesos Marathon
不小心删除了。是否有办法恢复容器或至少获取数据库文件?谢谢接受的答案是正确的,但是我想补充一下如何通过 Docker Volume 来恢复应用程序(在我的情况下是 PostgreSQL 数据库)的具体步骤。
我使用的是 CentOS 中的 Docker 版本 18.09.0,构建版本为 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
docker ps -a
下找到它,并运行docker start CONTAINER
来启动它。docker rm -v CONTAINER
删除了数据库,否则数据库文件可能仍然在/var/lib/docker/vfs/dir/
目录的某个位置,但您可能很难确定哪一个。如果您成功确定了正确的目录,您应该可以通过将该目录挂载到新的数据库实例中来恢复数据库。