docker 纯数据容器的持久性如何

How persistent are docker data-only containers

我对纯数据 docker 容器有点困惑。我读到将目录直接挂载到源是一种不好的做法-os: https://groups.google.com/forum/#!msg/docker-user/EUndR1W5EBo/4hmJau8WyjAJ

我知道如何制作纯数据容器:http://container42.com/2014/11/18/data-only-container-madness/

我看到了一些与我类似的问题:How to deal with persistent storage (e.g. databases) in docker

但是如果我有一个 lamp-server 设置..并且我有所有很好的数据容器设置,而不是将它们 'directly' 链接到我的 source-os 和偶尔做个备份..

有人来了,并重新启动了我的服务器。我如何再次设置我的 docker(仅数据)容器,这样我就不会 os 收集任何数据?

Docker 容器将保留在磁盘上,直到使用 docker rm 显式删除它们。如果您的服务器重新启动,您可能需要重新启动您的服务容器,但您的数据容器将继续存在,并且它们的卷将可供其他容器使用。

docker rm 本身不会删除实际数据(存在于 /var/lib/docker/vfs/dir

只有docker rm -v也会清除数据。

唯一的问题是,在 docker rm 之后,新的 docker 运行 会在 /var/lib/docker/vfs/dir 中重新创建一个空卷。
理论上,您可以使用符号链接将新卷文件夹重定向到旧文件夹,但这假设您记下了哪些卷与哪个数据容器相关联……在 docker rm.

之前

实际上,即使是 shykes 说在您提供的 link 中它被认为是 "hack",请注意日期。自从关于卷的 post 以来,已经过去了 Docker 年,在主机上装载卷不再被认为是不好的做法。事实上,here is a link 对同样的 shykes 说他有 "definitely used them at large scale in production for several years with no issues"。将主机 OS 目录挂载为 docker 卷,不用担心。这意味着您的数据在 docker restarts/deployments/whatever 中持续存在。它就在主机的磁盘上,当您的容器消失时它不会消失。

自从我使用 Docker,它运行得很好。此外,shykes 似乎不再认为这是不好的做法。

值得注意的是,您使用 "data-only containers" 创建的卷本质上仍然是主机 OS 上的目录,只是位于不同的位置 (/var/lib/docker/...)。一个好处是您可以使用友好的标识符来标记您的卷,因此您不必对目录路径进行硬编码。

缺点是备份特定数据卷等管理工作现在有点麻烦,因为您必须手动检查元数据以找到目录位置。此外,如果您不小心擦除 docker 安装或所有 docker 容器,您将丢失数据量。