还原已删除的容器docker

fae0ux8s  于 2021-06-21  发布在  Mesos
关注(0)|答案(2)|浏览(1844)

我有一个运行postgresql数据库的docker容器,但它被我的 Apache Mesos Marathon .
有什么方法可以恢复容器或者至少获取数据库文件吗?
谢谢

cyej8jka

cyej8jka1#

接受的答案是正确的,但是我想添加通过docker卷还原应用程序(在我的例子中是postgresql数据库)的具体步骤。
我正在使用docker版本18.09.0,在centos中构建4d60db4。
/var/lib/docker/volumes/ .
在这个文件夹中,有一些文件夹被命名为容器ID。每个容器id文件夹都有一个 _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 此时,包含旧数据的容器将可用。

mnowg1ta

mnowg1ta2#

如果它只是停止,而不是删除,你应该能够找到它下面 docker ps -a 然后就跑 docker start CONTAINER .
除非数据库是用 docker rm -v CONTAINER ,数据库文件可能仍在 /var/lib/docker/vfs/dir/ ,但你可能很难弄清楚是哪一个。如果确实找到了正确的目录,那么应该可以通过将目录装入新的数据库示例来恢复数据库。

相关问题