我有一个正在运行 postgresql db 的 docker 容器,但它被我的意外删除了Apache 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