我有一个运行postgresql db的docker容器,但我的Apache Mesos Marathon
意外删除了它。
我有什么办法可以恢复容器,或者至少可以获取数据库文件吗?
由于
答案 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。
/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