如何从已删除的Docker容器中恢复数据?如何将其重新连接到数据?
假设我删除了一个PostgreSQL Docker容器,该容器仅在此处具有其数据:
$ docker inspect postgres1...
"Source": "/var/lib/docker/volumes/4948af..../_data"
"Destination": "/var/lib/postgresql/data"
$ docker rm postgres1
如果没有其他容器引用该卷,则--volumes-
from即使文件仍位于以下位置的磁盘上,也无法再重新连接到该卷:/var/lib/docker/volumes/...
这给我带来了两个问题:
- 如果我不知道目录的卷UUID, 的 是什么?
- 这样做
ls /var/lib/docker/volumes/
给我带来了一百个这样的东西f77c92...
。 - 使用
find . -name "*postgres*"
我仍然会得到很多类似这样的结果… 10e0dc / _data / postgresql.conf,没有明确的方法来识别正确的结果。
- 这样做
- 在目录中找到正确的数据后,如何将新创建的postgres容器 到该数据中
/var/lib/docker/volumes/4948af.../_data
我每天都有完整的系统rsync备份。这将如何帮助恢复(缺少还原整个系统)?
回答:
这就是为什么在创建数据容器时,我总是将其路径注册在文件中的原因。(请参阅我的脚本updateDataContainerPath
)
用法(在创建数据容器后立即使用):
docker inspect ${gitolite_repos_cont} > /dev/null 2>&1 || docker create --name="${gitolite_repos_cont}" gitolite.repos /bin/true# source the script, to make the updatePath() function available
. ../updateDataContainerPath
# save the path in a file
updatePath ${gitolite_repos_cont} "$HOME/b2d/gitolite" ${grepos}
(这${grepos}
是您在其中注册或保存数据容器卷路径的文件)
如果该脚本 已经
为该数据容器保存了路径,则该脚本将删除空的数据容器文件夹,并将旧的文件夹移至新的文件夹(并更新新路径)。
sudo rm -Rf "${grpath}"sudo mv "${fgrpath}" "${grpath}"
这将有助于回答问题2,并完全避免问题1。
这样,我可以管理任何容器(包括数据容器,-v
当然没有选项),而且我知道下次重新创建该数据容器时,我会找回我的数据。
以上是 如何从已删除的Docker容器中恢复数据?如何将其重新连接到数据? 的全部内容, 来源链接: utcz.com/qa/436146.html