Docker的vfs存储后端为何不被认为适合生产环境?

8
Docker的vfs存储后端在多个地方被提及为不适合生产环境(例如Michael Crosby在Docker GitHub issue comment中的评论)。什么使其不适合生产环境?
Project Atomic的description of storage backends描述如下:
“vfs后端是一个非常简单的备用方案,没有写时复制支持。每个层都只是一个单独的目录。基于另一个层创建新层是通过将基础层深度复制到一个新目录来完成的。由于此后端不共享层之间的磁盘空间,并且由于创建新层是一个缓慢的操作,因此它并不是一个非常实用的后端。但是,它仍然有其用处,例如用于验证其他后端,或者如果您需要一个超级强大(但缓慢)的后端,可以在任何地方使用。”
根据描述,唯一的不足可能是会使用更多的磁盘空间和创建图层可能会变慢。但在运行时访问文件时,没有提到任何缺点,甚至被描述为“强大”。仅仅磁盘空间问题似乎不足以阻止生产使用。
1个回答

7

确实,您可以在生产环境中使用vfs驱动程序,但是请注意,由于它是一个“常规”副本,您将不会从devicemapper或btrfs提供的功能中受益,并且完全依赖底层文件系统。

运行时的缺点是它的运行速度要慢得多。一旦启动,如果您有相同的底层文件系统,它就是同样的情况。

简而言之,我建议您不要使用这种方式,因为:

  • 它首先是为测试而实施的,然后用于卷。从未意味着用于运行时
  • 它依赖于底层文件系统,因此您对Docker控制文件的能力较少。这可能会导致未来升级出现问题(也可能不会)。 Docker的目的是抽象主机,所以最好将这种事情委托给Docker。
  • 它需要很多磁盘空间
  • 它需要很长时间才能运行或提交

使用“常规”驱动程序时,Docker 处理文件系统和文件,而使用 vfs 时,它仅处理文件。它用于非可移植的事物,如测试和卷。 - creack
btrfs驱动程序适合生产环境吗?还有其他的驱动程序吗?您能提供一些相关链接吗? - zergood
1
Valko Sipuli在Atomic页面提供的链接非常好。它描述了所有的驱动程序。是的,btrfs已经准备好用于生产环境,但我个人更喜欢aufs。 - creack
抱歉,我没有注意到Valko Sipuli提供的链接。谢谢! - zergood
另外需要提到的是,由于所有内容都是复制的,因此内存不是共享的,因此每个正在运行的容器都会线性地将其所有库添加到内存中,从而显着减少您可以在单个主机上运行的容器数量。 - untore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接