我有一个运行postgresql数据库的docker容器,但它被我的 Apache Mesos Marathon .有什么方法可以恢复容器或者至少获取数据库文件吗?谢谢
Apache Mesos Marathon
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 此时,包含旧数据的容器将可用。
/var/lib/docker/volumes/
_data
docker volume ls
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
mnowg1ta2#
如果它只是停止,而不是删除,你应该能够找到它下面 docker ps -a 然后就跑 docker start CONTAINER .除非数据库是用 docker rm -v CONTAINER ,数据库文件可能仍在 /var/lib/docker/vfs/dir/ ,但你可能很难弄清楚是哪一个。如果确实找到了正确的目录,那么应该可以通过将目录装入新的数据库示例来恢复数据库。
docker ps -a
docker start CONTAINER
docker rm -v CONTAINER
/var/lib/docker/vfs/dir/
2条答案
按热度按时间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
此时,包含旧数据的容器将可用。mnowg1ta2#
如果它只是停止,而不是删除,你应该能够找到它下面
docker ps -a
然后就跑docker start CONTAINER
.除非数据库是用
docker rm -v CONTAINER
,数据库文件可能仍在/var/lib/docker/vfs/dir/
,但你可能很难弄清楚是哪一个。如果确实找到了正确的目录,那么应该可以通过将目录装入新的数据库示例来恢复数据库。