【问题标题】:Volume and data persistence卷和数据持久性
【发布时间】:2014-10-20 14:13:23
【问题描述】:

使用 docker 持久化容器数据的最佳方式是什么?我希望能够保留一些数据并在重新启动容器时能够将它们取回。我读过这个有趣的post,但它并没有完全回答我的问题。

据我所知,我只有一个选择:

docker run -v /home/host/app:/home/container/app

这会将计数器文件夹挂载到主机上。

还有其他选择吗?仅供参考,我不使用链接容器(--link)

【问题讨论】:

    标签: docker


    【解决方案1】:

    使用卷是处理要从容器中保留的数据的最佳方式。使用-v 标志效果很好,您不应该遇到这个问题。

    您还可以在Dockerfile 中使用VOLUME 指令,这意味着您不必在运行时添加任何更多选项,但是它们与特定容器紧密耦合,您需要使用docker start,而不是 docker run 来获取数据(或者当然是 -v 到过去创建的卷,可能在 /var/ 某处)。

    处理卷的一种常见方法是创建一个data volume container,其卷由-v 定义,然后在创建应用容器时,使用--volumes-from 标志。这将使您的新容器使用与您使用-v 的容器(您的数据卷容器)相同的卷。当然,这似乎是您将问题转移到其他地方。

    这使得在多个容器上共享卷变得非常简单。也许您有一个容器用于您的应用程序,另一个用于 logstash。

    【讨论】:

    • 谢谢马库斯,如果我的理解是正确的, -v /app 只有在我使用数据卷容器(--volumes-from)时才有用。它不会保留任何数据。如果我不想创建卷数据容器,我唯一的解决方案是将容器文件夹绑定到主机上? (-v /home/host/app:/home/container/app) 是否正确?如果有一个系统可以自动在主机上创建一个卷来保留数据但不指定主机挂载点(因为我们需要确保主机挂载点存在)
    • 所有卷都将保留在主机文件系统上,直到您删除容器。如果您只是再次启动相同的容器 ID,您可以完全不使用任何卷并且仍然拥有数据(尽管这不是最佳做法)。
    • @FlorentValdelievre 如果您创建了一个数据容器,那么您会自动在主机上的 /var/lib/docker/volumes/ 目录中获取该卷的目录。卷容器的优点是可移植性方面,即您不需要依赖在主机系统上设置的特定目录层次结构......这正是您想要的。唯一需要注意的是,用于容纳 /var/lib/docker/volumes 的存储设备应该有容量容纳您放入卷中的任何内容
    • @AmosFolarin 那么,可以像其他容器一样下载数据容器图像,这样即使存储在这些容器中的数据库中的数据也会被下载?
    • 没有。您必须将数据库存放在容器文件系统中。约定是您将数据放在容器之外。也许看看弗洛克? docs.clusterhq.com/en/latest 用于批量迁移,几个月前看过一个演示,看起来很有趣
    【解决方案2】:

    创建一个卷容器:-v 的这种格式创建一个卷,例如目录/var/lib/docker/volume/d3b0d5b781b7f92771b7342824c9f136c883af321a6e9fbe9740e18b93f29b69 这仍然是一个绑定挂载的 /container/path/vol

    docker run -v /foo/bar/vol --name volbox ubuntu
    

    我现在可以使用这个容器作为我的卷。

    docker run --volumes-from volbox --name foobox ubuntu /bin/bash
    root@foobox# ls /container/path/vol
    

    现在,如果我分发这两个容器,它们就会正常工作。该卷将始终可供 foobox 使用,无论它部署到哪个主机。

    如果你不希望你的存储在 /var/lib/docker/volumes...

    我建议你看看 Michael Crosby 的一些优秀帖子 https://docs.docker.com/userguide/dockervolumes/ 和码头工人文档 https://docs.docker.com/userguide/dockervolumes/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-11
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多