我有一个运行postgresql数据库的docker容器,但它被我的Apache Mesos Marathon
意外删除了。
有没有什么方法可以恢复容器,或者至少,获取数据库文件?
谢谢
发布于 2015-03-23 09:25:34
如果它只是停止,而不是删除,您应该能够在docker ps -a
下找到它,并只需运行docker start CONTAINER
。
除非使用docker rm -v CONTAINER
删除数据库,否则数据库文件可能仍在/var/lib/docker/vfs/dir/
下的某个目录中,但您可能很难找出是哪一个。如果您确实设法找出了正确的目录,那么您应该能够通过将目录挂载到新的数据库实例中来恢复db。
发布于 2019-09-29 12:14:48
被接受的答案是正确的,但是我想添加通过扩展坞卷恢复应用程序(在我的情况下,它是一个PostgreSQL数据库)的具体步骤。
我使用的是Docker版本18.09.0,在CentOS中构建4d60db4。
请转到/var/lib/docker/volumes/
.
_data
文件夹,其中包含该容器的应用程序文件。找到要还原的特定卷,并将其容器ID保存在某个位置,以便在接下来的步骤中记住它。docker volume ls
以确保容器ID作为卷列出。这将是我们要还原的部分。如果您不记得默认的挂载目标,请通过命令docker run -d --name postgres -p 5432:5432 postgres
.docker inspect postgres
Mountsvolume_name
运行一个虚拟容器,并检查Destination
。在我的示例中,它是/lib/postgresql/data
.
docker run -d --name postgres -p 5432:5432 --mount source=volume_name,target=/var/lib/postgresql/data postgres
https://stackoverflow.com/questions/29202787
复制