【问题标题】:Docker restore volume of removed container?Docker恢复已删除容器的体积?
【发布时间】:2016-02-29 10:01:49
【问题描述】:

目前我正在尝试了解有关数据持久性的一些场景。

数据卷容器模式听起来很棒,并且有一些方法可以备份附加的卷。但是,如果我没有当前备份,DataVolumeContainer 会被删除(而不是仅仅停止)怎么办?

据我了解,该卷实际上仍存在于我的主机系统上,但我无法将它附加到新容器(因为没有剩余的引用容器)。

是否有可能通过引用其卷文件或卷名来恢复该卷(例如将其安装到新容器)? (假设我为卷命名)

【问题讨论】:

    标签: docker backup containers volume restore


    【解决方案1】:

    但我无法将其附加到新容器(因为没有剩余的引用容器)。
    是否有可能通过引用其卷文件或卷名(假设我为卷命名)来恢复该卷(例如将其挂载到新容器)?

    是的:如果你能找到你的旧卷路径,你可以,正如我在“Docker mount dangling volume”中提到的,在一个(和空的)数据卷容器中恢复它的内容将其 mounting path 内容替换为在旧路径中找到的内容。

    我更喜欢saving that path whenever I create a new data volume container

    【讨论】:

    • 谢谢!所以基本上当我知道要附加到新容器的卷时,我可以简单地使用卷的路径(在主机系统上)作为 '-v : 中的主机目录'?惊人的!太感谢了!! :)
    • @Ciprian 我说的不是卷,而是数据卷容器,它将数据存储在 /var/lib/docker/volumes/xxx 中。
    • 是的,但是您通过修改其挂载路径将旧数据卷容器的卷附加到新容器,对吧?
    • @Ciprian 我保留了新的挂载路径,但是把旧的内容放进去(其实我把新的挂载路径去掉了,把旧的挂载路径重命名为新的挂载路径) :github.com/VonC/b2d/blob/…)
    • 您的意思是“用新的替换旧的”,对吗?要么我不明白:(
    【解决方案2】:

    从您的文本中不清楚您是否已将卷与容器一起删除 - 然后它就消失了 - 否则默认情况下您可以在此处找到“原始”docker 卷:/var/lib/docker/volumes/。查看docker rm -v 的文档。

    通常,您会通过docker run ... -v hostpath:containerpath ... 创建一个卷,然后无论您是否移除容器,您的数据始终在hostpath 可用。

    【讨论】:

    • 感谢您的回答! :) 但我的问题特别指出了处理卷时的数据持久性。我假设在没有“-v”标志的情况下使用“rm”命令,应该澄清一下,sry!
    猜你喜欢
    • 1970-01-01
    • 2021-02-26
    • 2021-03-04
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 2020-07-09
    相关资源
    最近更新 更多